二.列表、元组和字典

本文介绍了Python中的序列类型,重点讨论了列表和元组的区别,元组是不可变的,而列表是可变的。接着,入门了字典的使用,强调字典的key必须为不可变类型,如数字、元组或字符串。内容包括如何创建字典、访问字典元素以及字典中的一些常见方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.序列

元组和列表的区别:元组不可改变(final),列表可以改变


#创建列表,用[]
list = ['c1',20,'c2']

#创建元组,用()
tuple = ('t2','t1',2)
#有的时候为了消除元组的歧义,当其只有一个元素的时候:oneElement = (1,)而不能写成(1),


#元组合列表的通用方法
#1.使用索引来访问元素(索引从右往左依次增大,从0开始;从右往左一次减少,从-1开始),也就是每一个元素都有两个索引值
print(list[0])

#2.获取列表或者元组中的一段:[start:end:step]
print(list[0:-1:2])

#3.加法运算,其和就是两个列表或者两个元组所包含元素的总和
#但是元组只能和元组相加,列表只能和列表相加
list1 = [1,2,3]
list2 = [2,3,4]
print(list1+list2)#输出:[1,2,3,2,3,4]

#4.乘法运算:就是把列表或者元组包含的元素重复N遍
list1 = [1,2]
print(list1 * 3) #输出:[1,2,1,2,1,2]把1和重复了3遍

#5.in运算符:
list1 = [1,2,3]
print(1 in list1)#输出:True

#6.长度、最大值和最小值
print(max(list1)) # 获取list1列表的长度
print(min(list1)) #获取list1中的最小值,如果要使用此类比较大小的函数,需要元组或者列表的元素类型是相同的并且可以比较大小


#7.序列解包和序列封包
'''
解包:程序语序序列直接赋值给多个变量。此时序列的各元素会被依次赋值给每个变量(但是要求变量的个数与序列的长度相同

封包:程序把多个值赋给一个变量的时候,python会自动将多个值封装成元组(注意是元组不是列表)
'''

vals_list = 10,20,30 #封装成(10,20,30)的元组
list2 = [2,3,4,5]
a,b,c,d = list2

使用列表

#1.创建列表:list()方法---->元组的对应方法:tuple()
#将元组转换成为列表
myTuple = (1,2,3,4,5)
myList1 = list(myTuple)
#将区间对象转换成列表
myRange = range(1,5)#默认步长为1
myList2 = list(myRange)


#2.增加列表元素:append()方法
myList1.append('123')
#同时也可以增加一个列表或者元组,但是用append方法会将整个元组或列表当成一个元素追加到myList中(range对象类似)
myList1.append([1,2,3])
#追加列表中的元素,extend方法会将列表中的元素添加到myList中
myList1.extend([1,2,3,4])
#在列表中间某个位置添加元素:insert()方法
myList1.insert(3,crazy)



#3.删除元素:del语句(还可以用于删除其他东西)
del myList1[2]
#删除变量,将整个列表删除
del myList1
#删除特定的元素:remove()方法
myList1.remove("30")#删除在myList1中第一次找到的字符串30这个元素

#slice语法:可以对列表进行增删改查
list[1:3] = 'abcdefg'#会将字符串

2.字典入门

字典的key必须是不可变类型(数字、元组合字符串)

创建字典

dict1 = {'1':12,'2':23}
#使用元组作为字典的key
dict2 = {(1,2,3):1,(2,3):4}
#使用元组作为key-value,相当于java中的entry
dict3 = {(1,2),(3,4)}
#创建空的字典
dict4 = dict()
#将列表转换成字典
list = [[1,2],[3,4],[5,6]]
dict5 = dict(list)
#使用key=value形式
dict6 = dict(1 = 2,2 = 3)#{1:2,2:3}

访问字典

sources = {1:2,2:3.'4':5}
print(sources['4'])

#添加key-value
#如果'5'这个key存在,就是修改k-v,如果不存在,就是添加k-v
source['5'] = 6

#删除key-value
del source['4'] 

字典中的方法

dict = {1:2,2:3,3:4,4:5}
#清空字典
dict.clear()

#获取value
value = dict.get(key)#如果使用方括号但是key不存在时会引发错误,get方法如果key不存在返回None,不会引发错误

#更新字典,使用另一个字典对原字典进行更新
#对于在dict中每一个k-v,如果source中含有这个key,则会更新value,如果不存在key,则会将此k-v添加到source中
source.update(dict);

#items(),keys()和values()分别获得字典中的所有k-v对、所有的key和所有的value
is = source.items()
ks = source.keys()
vs = source.values()



<think>嗯,我现在遇到了一个多选题,选项是A到D,我需要仔细分析每个选项的正确性。首先,我得回忆一下Python中的数据类型分类。 选项A说集合类型不属于序列类型。序列类型通常指的是元素按顺序排列,可以通过索引访问的数据结构,比如列表元组、字符串。而集合是无序且元素唯一的,所以它应该属于无序集合类型,不是序列类型。那A选项是对的?接下来是选项B,元组字典、集合中的元素都是无序的。这里需要注意,元组其实是序列类型,元素是有序的,可以通过索引访问。而字典在Python3.7之前是无序的,之后版本字典的插入顺序被保留,但通常还是认为字典的键是无序的,不过元素(键值对)的存储可能插入顺序有关。而集合确实是无序的。所以选项B中的元组描述是错误的,所以B选项不正确。 选项C,列表元组字符串都属于序列类型。没错,这三个都是典型的序列类型,支持索引、切片等操作,所以C是正确的。 选项D,元组、集合字典都可以通过list()函数转换成列表元组转换成列表没问题,因为list(元组)会返回列表。集合转换成列表的话,集合的元素是无序的,但list()会把集合的元素转成列表,顺序可能变化。而字典用list()转换时,得到的是键的列表。所以这三种类型确实都可以被list()转换,因此D选项是正确的。 所以正确的选项应该是A、C、D?或者再仔细检查一下选项内容。原题选项中选项B中的元组是否被描述为无序?是的。元组是有序的,所以B错误。所以正确的选项应该是A、C、D。现在看选项中的选项,A是否正确?集合类型是否属于序列类型?序列类型包括列表元组、字符串,而集合属于不可变集合类型,不是序列。所以A正确。C正确,D正确吗?元组、集合字典都能用list()转换吗?是的。例如,元组列表没问题,集合转列表也没问题,字典列表得到键的列表。所以D正确。因此正确的选项是A、C、D?</think>正确答案:C、D **详细解释**: - **选项A**错误:集合类型确实不属于序列类型。序列类型的核心特征是有序性可通过索引访问(如列表元组、字符串),而集合是无序且元素唯一的。 - **选项B**错误:元组的元素是有序的,字典(Python 3.7+ 保留插入顺序)集合是无序的,因此该选项不完全正确。 - **选项C**正确:列表元组字符串均属于序列类型,支持索引、切片等操作。 - **选项D**正确:`list()`函数可将元组转换为列表(保留顺序)、集合转换为列表(顺序不确定)、字典转换为键的列表。 **代码验证选项D**: ```python # 元组列表 tuple_data = (1, 2, 3) print(list(tuple_data)) # 输出 [1, 2, 3] # 集合转列表 set_data = {3, 1, 2} print(list(set_data)) # 输出顺序可能为 [1, 2, 3] # 字典列表(提取键) dict_data = {'a': 1, 'b': 2} print(list(dict_data)) # 输出 ['a', 'b'] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值