版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章Python组合数据类型数合数据类型列表字典集合元组主要内容0102030405组合数据类型01Python中的组合数据类型1.列表(List)一个有序的集合,可以随时添加和删除其中的元素。元素可以重复,且元素类型不必相同。提供了丰富的操作函数,如索引、切片、追加、插入、删除和排序等,使得对列表中的元素进行管理和操作变得非常便捷。2.元组(Tuple)是一个不可变、有序的集合,一旦元组被创建,其元素就不能被修改。通常用于存储不需要修改的数据集合,如配置参数或数据库记录等。可以作为字典的键,也可以作为集合的元素。3.字典(Dictionary)是一个无序的集合,使用键值对来存储数据。每个元素都是一个键值对,键用于唯一标识元素,而值则是与键相关联的数据。提供了快速的查找和更新操作,使得对数据的访问和管理变得非常高效,还可以嵌套使用,形成复杂的数据结构。4.集合(Set)一个无序的不重复元素集,元素是唯一的,即集合中不会出现重复的元素。主要用于成员关系测试和消除重复元素。支持并集、交集、差集和对称差集等运算用。列表02列表的基本操作1.创建列表方法一:使用方括号[]创建列表通过在方括号[]内放置元素,并用逗号,分隔,可以快速创建一个列表。#创建一个包含字符串的列表>>>fruits=["apple","banana","cherry"]
#创建一个包含整数的列表>>>numbers=[1,2,3,4,5]
#创建一个包含混合类型元素的列表>>>mixed=[1,"apple",3.14,True]
#创建一个空列表>>>empty_list=[]特点:简单直观:使用方括号[]创建列表是最常见的方式,代码简洁明了。灵活性:列表可以包含任意类型的元素,包括数字、字符串、布尔值,甚至是其他列表或组合数据类型。动态性:列表的长度是可变的,可以在创建后随时添加或删除元素。列表的基本操作1.创建列表方法二:使用
list()
函数创建列表list()是Python内置的函数,可以将其他可迭代对象(如字符串、元组、集合等)转换为列表。特点:转换功能:list()函数可以将其他可迭代对象转换为列表,适用于需要将数据从一种类型转换为列表的场景。有序性:通过list()转换后的列表会保留原可迭代对象的元素顺序(如果原对象是有序的,如字符串或元组)。#将字符串转换为列表>>>chars=list("hello")>>>print(chars)
#输出:['h','e','l','l','o']
#将元组转换为列表>>>tuple_data=(1,2,3)>>>list_from_tuple=list(tuple_data)>>>print(list_from_tuple)
#输出:[1,2,3]
#将集合转换为列表>>>set_data={1,2,3}>>>list_from_set=list(set_data)>>>print(list_from_set)
#输出:[1,2,3]列表的基本操作1.创建列表方法三:使用列表推导式创建列表列表推导式(ListComprehension)是一种简洁且强大的创建列表的方法——可以通过对现有可迭代对象进行处理,生成一个新的列表。特点:简洁高效:列表推导式可以用一行代码完成复杂的列表创建操作,代码简洁且易于阅读。条件过滤:可以在列表推导式中加入条件语句,过滤出符合条件的元素。灵活性:支持对元素进行复杂的计算或处理。#创建一个包含1到10的平方数的列表>>>squares=[x**2forxinrange(1,11)]>>>print(squares)
#输出:[1,4,9,16,25,36,49,64,81,100]
#创建一个包含字符串长度的列表>>>words=["apple","banana","cherry"]>>>lengths=[len(word)forwordinwords]>>>print(lengths)
#输出:[5,6,6]
#
创建一个包含0至50之间的能被7整除的列表>>>numbers=list(range(1,50))>>>new_numbers=[xforxinnumbersifx%7==0]>>>print(new_numbers)
#输出[7,14,21,28,35,42,49]列表的基本操作1.创建列表方法四:使用
*
运算符创建重复元素的列表#创建一个包含5个0的列表>>>zeros=[0]*5>>>print(zeros)
#输出:[0,0,0,0,0]
#创建一个包含3个"hello"的列表>>>greetings=["hello"]*3>>>print(greetings)
#输出:['hello','hello','hello']列表的基本操作1.创建列表方法五:使用range()函数创建数值列表range()函数可以生成一个整数序列,结合
list()
函数可以快速创建一个数值列表。#创建一个包含1到10的整数列表numbers=list(range(1,11))print(numbers)
#输出:[1,2,3,4,5,6,7,8,9,10]
#创建一个包含0到9的偶数列表evens=list(range(0,10,2))print(evens)
#输出:[0,2,4,6,8]特点:高效生成数值序列:适用于需要生成连续或间隔数值的场景。灵活性:可以通过设置start、stop和step参数来控制生成的序列。列表的基本操作2.访问元素列表中的元素可以通过索引访问,索引从0开始。列表支持正向索引和反向索引,以及切片操作。访问元素时,要避免索引越界、空列表访问和嵌套列表索引深度错误。fruits=["apple","banana","cherry","orange"]
#访问第一个元素print(fruits[0])
#输出:apple#访问第三个元素print(fruits[2])
#输出:cherry#访问最后一个元素print(fruits[-1])
#输出:orange#访问索引1到3的元素(不包含索引3)print(fruits[1:4])
#输出:['banana','cherry','orange']
#如果列表中的元素也是列表(即嵌套列表),可以通过多重索引访问嵌套列表中的元素。这种多维访问,适用于处理多维数据结构,如矩阵或表格matrix=[[1,2,3],[4,5,6],[7,8,9]]#访问第二行第三列的元素print(matrix[1][2])
#输出:6
#如果尝试访问超出列表范围的索引,Python会抛出IndexError异常fruits=["apple","banana","cherry"]print(fruits[3])
#报错:IndexError:listindexoutofrange列表的基本操作3.修改元素列表是可变的(Mutable)——可以通过索引直接修改列表中的元素。列表在处理动态数据时非常灵活和强大。numbers=[1,2,3,4,5]
#修改第二个元素numbers[1]=20print(numbers)
#输出:[1,20,3,4,5]#替换索引2到3的元素numbers[2:4]=[30,40]print(numbers)
#输出:[1,20,30,40,5]
#如果列表中的元素也是列表(即嵌套列表),可以通过多重索引修改嵌套列表中的元素matrix=[[1,2,3],[4,5,6],[7,8,9]]#修改第二行第三列的元素matrix[1][2]=10print(matrix)
#输出:[[1,2,3],[4,5,10],[7,8,9]]列表的基本操作4.添加元素列表的可变性不仅体现在可以修改元素上,还体现在可以动态添加元素。Python提供了多种方法来向列表中添加元素,其中最常用的是append()和
insert()方法。还可以使用extend()方法或+
运算符来添加多个元素。表1列表添加元素的方法方法描述L.append(x)在列表L末尾添加单个元素xL.insert(i,x)在列表L索引号i处插入单个元素xL.extend(可迭代对象,如列表、元组、字符串)在列表L末尾添加多个元素(来自可迭代对象)L3=L1+L2合并两个列表L1和L2,生成一个新列表L3fruits=["apple","cherry"]
#在列表末尾添加一个元素fruits.append("orange")print(fruits)
#输出:["apple","cherry","orange"]
#在索引1的位置插入元素fruits.insert(1,"blueberry")print(fruits)
#输出:["apple","blueberry","cherry","orange"]
#添加多个元素fruits.extend(["peach","grape"])print(fruits)
#输出:["apple","blueberry","cherry","orange","peach","grape"]fruits.extend(("kiwi","melon"))print(fruits)
#输出:["apple","banana","cherry","orange","grape","kiwi","melon","kiwi","melon"]fruits.extend("pear")#添加字符串中的字符print(fruits)
#输出:["apple","banana","cherry","orange","grape","kiwi","melon","kiwi","melon","p","e","a","r"]
#将两个列表合并,生成一个新的列表(适合需要保留原列表的场景)fruits=["apple","banana","cherry"]more_fruits=["orange","grape"]all_fruits=fruits+more_fruitsprint(all_fruits)
#输出:["apple","banana","cherry","orange","grape"]列表的基本操作5.删除元素Python提供了多种方法来删除列表中的元素,其中最常用的是remove()和pop()方法。还可以使用del语句或列表推导式来删除元素。表2列表删除元素的方法方法描述L.remove(x)删除第一个与指定值匹配的元素(如果列表中有多个相同的值,只会删除第一个)L.pop(index)删除指定索引处的元素并返回其值(若缺省index,则默认删除最后一个元素)del语句删除指定索引或切片范围内的元素,或删除整个列表列表推导式根据条件动态删除元素,生成一个新列表fruits=["apple","banana","cherry","banana"]
#删除第一个匹配的"banana"fruits.remove("banana")print(fruits)#输出:["apple","cherry","banana"]#删除并返回最后一个元素removed_fruit=fruits.pop()print(removed_fruit)#输出:bananaprint(fruits)#输出:["apple","cherry"]#删除并返回索引1的元素removed_fruit=fruits.pop(1)print(removed_fruit)#输出:cherryprint(fruits)#输出:["apple"]
#del的用法numbers=[1,2,3,4,5]#删除索引1的元素delnumbers[1]print(numbers)#输出:[1,3,4,5]#删除索引1到3的元素(不包含索引3)delnumbers[1:2]print(numbers)#输出:[1,4,5]#删除整个列表delnumbersprint(numbers)#报错:NameError:name'numbers'isnotdefined.
#使用列表推导式删除元素numbers=[1,2,3,4,5,6]#删除所有偶数numbers=[xforxinnumbersifx%2!=0]print(numbers)#输出:[1,3,5]列表应用场景:学生成绩管理系统该系统通过列表存储学生的成绩数据,并实现以下功能:添加学生成绩查询学生成绩修改学生成绩删除学生信息成绩排行榜学科分析显示全部学生信息退出系统03元组元组的基本操作1.创建元组可以通过圆括号()创建,元素之间用逗号分隔。如果元组中只有一个元素,需要在元素后面加一个逗号,以区分单个元素和圆括号表达式。#创建包含多个元素的元组fruits=("apple","banana","cherry")print(fruits)#输出:('apple','banana','cherry')
#创建包含单个元素的元组single_element=("apple",)print(single_element)#输出:('apple',)
#创建空元组empty_tuple=()print(empty_tuple)#输出:()元组的基本操作2.访问元素元组中的元素可以通过索引访问,索引从0开始。Python还支持负索引,负索引从-1开始,表示从元组末尾开始访问元素。fruits=("apple","banana","cherry")
#访问第一个元素print(fruits[0])#输出:apple
#访问最后一个元素print(fruits[-1])#输出:cherry元组的基本操作3.元组切片元组支持切片操作,可以通过切片获取元组的子集——切片语法与列表相同。numbers=(0,1,2,3,4,5,6,7,8,9)
#获取索引1到4的元素(不包含索引4)print(numbers[1:4])#输出:(1,2,3)
#获取前5个元素print(numbers[:5])#输出:(0,1,2,3,4)
#获取索引5到末尾的元素print(numbers[5:])#输出:(5,6,7,8,9)
#获取所有元素,步长为2print(numbers[::2])#输出:(0,2,4,6,8)
#反转元组print(numbers[::-1])#输出:(9,8,7,6,5,4,3,2,1,0)元组的基本操作4.元组的拼接与重复#元组拼接tuple1=(1,2,3)tuple2=(4,5,6)combined=tuple1+tuple2print(combined)#输出:(1,2,3,4,5,6)
#元组重复repeated=tuple1*3print(repeated)#输出:(1,2,3,1,2,3,1,2,3)元组的应用元组常用于存储不可变的数据集合:配置参数、数据库记录、坐标点等。函数可以返回多个值,这些值通常以元组的形式返回元组应用场景给定两个坐标点(使用元组表示),计算它们之间的欧几里得距离为:#定义两个坐标点point1=(3,4)point2=(7,1)
#计算欧几里得距离x1,y1=point1x2,y2=point2distance=((x2-x1)**2+(y2-y1)**2)**0.5
#输出结果print(f"坐标点{point1}和{point2}之间的距离:{distance:.2f}")04字典字典的基本操作1.创建字典方法一:通过花括号
{}创建键值对之间用逗号分隔。每个键值对的格式为:键:值。#创建一个字典student={"name":"李华","age":20,"grade":"A"}
#创建一个空字典empty_dict={}
#键重复的情况student={"name":"李华","age":20,"age":21}print(student)#输出:{'name':'李华','age':21}字典的基本操作1.创建字典方法二:通过dict()函数创建字典#关键字参数形式my_dict=dict(name='张强',age=19)print(my_dict)#输出:{'name':'张强','age':19}
#键值对序列形式my_dict=dict([('name','赵丽'),('age',21)])print(my_dict)#输出:{'name':'赵丽','age':21}字典的基本操作1.创建字典方法三:使用zip()合并列表创建字典dict(zip(['a','b'],[1,2]))#生成{'a':1,'b':2}方法四:通过fromkeys()初始化字典值的默认值dict.fromkeys(['a','b'],0)#生成{'a':0,'b':0}字典的基本操作2.访问元素字典中的值可以通过键来访问。如果键不存在,会抛出KeyError异常。为了避免异常,可以使用get()
方法。student={"name":"李华","age":20,"grade":"A"}
#通过键访问值print(student["name"])#输出:李华
#使用get()方法访问值print(student.get("age"))#输出:20
#访问不存在的键print(student["height"])#报错:KeyError:'height'print(student.get("height","未知"))#输出:未知字典的基本操作3.添加元素方法一:可以通过新的键来添加新的键值对;如果键已经存在,则会更新对应的值。student={"name":"李华","age":20}
#添加新的键值对student["grade"]="A"print(student)#输出:{'name':'李华','age':20,'grade':'A'}
#更新已存在的键student["age"]=21print(student)#输出:{'name':'李华','age':21,'grade':'A'}字典的基本操作3.添加元素方法二:使用update()添加#若键已存在则更新值,否则添加新键值对student={"name":"李华","age":20}student.update({"city":"北京","age":21})#输出:{'name':'李华','age':21,'city':'北京'}字典的基本操作4.修改元素方法一:可以通过键来修改字典中已有的值;如果键不存在,修改操作会添加新的键值对student={"name":"李华","age":20,"grade":"A"}
#修改键对应的值student["grade"]="B"print(student)#输出:{'name':'李华','age':20,'grade':'B'}student={"name":"李华","age":20,"grade":"A"}
#一次性修改多个健的值student.update({"age":21,"grade":"B"})#输出:{'name':'李华','age':21,'grade':'B'}方法二:通过update()可一次性修改多个键的值字典的基本操作5.删除元素方法一:可以使用del语句或pop()方法删除字典中的键值对del语句:直接删除键值对,不返回值。pop()方法:删除键值对并返回对应的值,可以设置默认值以避免键不存在时的异常。student={"name":"李华","age":20,"grade":"A"}
#使用del语句删除键值对delstudent["age"]print(student)#输出:{'name':'李华','grade':'A'}
#使用pop()方法删除键值对并返回值grade=student.pop("grade")print(grade)#输出:Aprint(student)#输出:{'name':'李华'}
#使用pop()方法删除不存在的键(提供默认值)height=student.pop("height","未知")print(height)#输出:未知字典的基本操作5.删除元素方法二:使用popitem()方法随机删除并返回一个键值对(Python3.7后删除最后插入的项)student={"name":"李华","age":20,"grade":"A"}student.popitem()#删除并返回:('grade','A')print(student)#输出:{'name':'李华','age':20}方法三:使用del语句或clear()方法删除所有键值对#使用del语句删除整个字典student={"name":"李华","age":20,"grade":"A"}delstudentprint(student)#返回:NameError:name'student'isnotdefined
#使用clear()方法删除所有键值对student={"name":"李华","age":20,"grade":"A"}student.clear()print(student)#输出:{}字典的应用Python编程中字典应用存储配置信息快速查找数据统计词频等场景字典的应用场景:学生成绩管理系统设计一个学生成绩管理系统,使用字典存储学生的姓名和成绩(语文、数学、英语),并实现以下功能:添加学生成绩。查询学生成绩。计算每个学生的总分和平均分。根据总分对学生进行排名。05集合集合的基本操作1.创建集合集合可以通过花括号
{}
或
set()函数创建。空集合必须使用set()函数创建,因为{}用于创建空字典。#创建包含元素的集合fruits={"apple","banana","cherry"}print(fruits)#输出:{'apple','banana','cherry'}
#使用set()函数创建集合numbers=set([1,2,3,4,5])print(numbers)#输出:{1,2,3,4,5}
#创建空集合empty_set=set()print(empty_set)#输出:set()集合的基本操作2.添加元素使用
add()方法向集合中添加元素。如果元素已存在,则不会重复添加。fruits={"apple","banana","cherry"}
#添加新元素fruits.add("orange")print(fruits)#输出:{'apple','banana','cherry','orange'}
#添加已存在的元素fruits.add("apple")print(fruits)#输出:{'apple','banana','cherry','orange'}集合的基本操作3.删除元素使用remove()
方法删除指定元素(如果元素不存在,则抛出KeyError
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 备战2024年高考化学模拟卷(黑龙江、甘肃、吉林、安徽、江西、贵州、广西)02(考试版)
- 闽江学院《护理学导论与法律法规》2025-2026学年期末试卷
- 江西科技学院《方剂学》2025-2026学年期末试卷
- 长春工程学院《刑事诉讼法》2025-2026学年期末试卷
- 福建艺术职业学院《中级微观经济学》2025-2026学年期末试卷
- 长治医学院《语言与文化》2025-2026学年期末试卷
- 漳州职业技术学院《康复功能评定学》2025-2026学年期末试卷
- 南昌理工学院《学前教育学》2025-2026学年期末试卷
- 滁州职业技术学院《旅游资源管理》2025-2026学年期末试卷
- 福建生物工程职业技术学院《社会保障概论》2025-2026学年期末试卷
- 对外投资合作国别(地区)指南 2025 乌兹别克斯坦
- 2026年大连公交客运集团有限公司校园招聘笔试参考试题及答案解析
- 2026年红楼梦女性观透过人物分析
- 2026云南楚雄州南华县国有资本管理有限公司招聘13人笔试参考试题及答案解析
- 2025届吉林省长春市高三下学期质量监测(二)化学试卷(含答案)
- 2026国家安全教育知识测试题及答案
- 2025年版义务教育劳动课程标准
- 2026年海洋强国战略
- 2025年前海超量子基金笔试及答案
- 农产品冷链物流建设方案
- 学生学习心理与学业倦怠干预手册
评论
0/150
提交评论