列表 List
元组tuple
字典 dict
集合set
列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
对列表的操作:
创建列表
list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5 ] list3 = ["a", "b", "c", "d"] list4=[randint(-10,10) for _ in range(10)]#_表示一个零时变量,for后面这部分其实就是表示生成是个元素,每次是从-10到10的一个随机整数作为这个list的元素。 list5=[x for x in range(1,15,3)]
运行结果
['physics', 'chemistry', 1997, 2000] [1, 2, 3, 4, 5] ["a", "b", "c", "d"] [-7, -6, 4, 1, -3, 4, 9, -8, -9, -8] [1, 4, 7, 10, 13]
访问列表中元素的值
list1 = [1, 2, 3, 4, 5, 6, 7 ] print(list1[0]) print(list1[1:5])
运行结果:
1 [2, 3, 4, 5]
更新列表
可以通过列表的索引直接修改元素,也可以通过append()方法来给列表添加元素
list = ['physics', 'chemistry', 1997, 2000] list[2]='3000'#直接修改列表元素 list.append('new element') list
运行结果:
['physics', 'chemistry', ‘3000’, 2000, 'new element']
删除列表元素
list1 = ['physics', 'chemistry', 1997, 2000] del list1[2]#删除第三个元素 list1
运行结果
['physics', 'chemistry', 2000]
列表操作包含以下函数:
列表操作包含以下方法:
元组的学习一般是和列表做对比学习的,元组的格式相比于列表变成了小括号。
学习元组主要注意一下问题:
元组不可变性:
a = (1,2)
a[0] = 2 会报错TypeError: ‘tuple’ object does not support item assignment。
a = (1,2,[1,2,3])
a [2][1] = 0 是可以的
元组的不可变性是指元组的元素指向的数据不可变。所以tuple不变的是指向,指向什么就一直是什么,不能改变。
元组的相加:
a=(1,2,3,4) id(a) b=(3,4,5) a=a+b id(a) a
运行结果:
120091534616 120120326072 (1, 2, 3, 4, 5, 3, 4, 5)
这里两次输出a的id不相同,说明他们是不同的对象,刚开始a=(1,2,3,4),后面讲a+b组合的一个元组重新赋值给a,不是a变了,原来的那个元组也没有变,只是没有了引用,最后会被当做垃圾回收。
元组的删除:
tup = (1,2,3,4);
del tup[0];
此时会报错TypeError: ‘tuple’ object doesn’t support item deletion
元组访问及切片:
a = (1,2,[3,4])
a[0]指向1,a[2][1]指向4
a[:1]指向一个子元组(1,2)
元组操作
cmp(),len(),min(),max()都是序列的内置函数,tuple也是序列,所以可以用内置函数操作。tuple()是工厂函数。
字典是另一种可变容器模型,且可存储任意类型对象。
具有以下特点:
# 用dict()函数创建 dict1 = dict([('name', 'kyda'), ('e', 10)]) # 用{}创建 dict2 = {'name': 'lin', 'age': 21} print(dict1) # 使用键(key)来访问元素 print(dict2['name']) # 使用键(key)来访问元素,并修改元素的值 dict2['age'] = 23 print(dict2)
结果:
{'name': 'kyda', 'age': 10} lin {'name': 'lin', 'age': 23}
字典的方法:
具有以下特点:
# 两种方法创建 set1 = set('kydaa') set2 = {'abc', 'jaja', 'abc', 'kyda'} print(set1) print(set2)
结果:自动将重复元素去除
{'a', 'y', 'd', 'k'} {'jaja', 'abc', 'kyda'}
关系测试:
>>> x = {1,2,3,4} >>> y = {3,4,5,6} >>> x & y #交集 set([3, 4]) >>> x | y #并集 set([1, 2, 3, 4, 5, 6]) >>> x - y #差集,x有但是y没有的 set([1, 2]) >>> x ^ y #对称差集 set([1, 2, 5, 6])
集合的方法: