<2>、数据容器_tuple
一、元组tuple( ),
有序列表,和list非常类似,但是tuple一旦初始化就不能修改,比如定义一个保存了三个名字的tuple元组: classmates = ('James', 'Kobe', 'Polo') ,注意:tuple元组的定义使用一对小括号。
由于元组是不可变的,因此元组对象没有append()、insert()和del这样的方法,实际上,tuple的使用可以使得代码更安全,防止错误赋值导致重要对象的改变。
二、元组可以通过索引来查找
例如:
tuple_a = (1, 2, 3, 4, 5, 6, 'e123', "daqwe", [1, 2])
print(tuple_a[3])
或者
tuple_a = (1, 2, 3, 4, 5, 6, 'e123', "daqwe", [1, 2])
print(tuple_a.index(1))
print(tuple_a.count(5))
另外,一元组需要在那一个元素后加一个英文逗号,否则输出格式为字符串
# 一元组
tuple_1 = ("a",)
print(tuple_1, type(tuple_1))
三、字典类型dict( )
dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。字典的创建使用大括号 {} 包含键值对,并用冒号 : 分隔键和值,形成 键:值 对,其中键必须是唯一的,但值可以重复,值可以取任何数据类型,如字符串,数字,元组,但键必须是不可变的,其键值对是无序的。
例如:要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:
names = ['Michael', 'Bob', 'Tracy']
scores = [95, 75, 85]
给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长 如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢
定义一个dict字典:
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
通过key可以获取value:d['Bob'] 返回75。
四、字典dict()的常用方法:
1、get(): 通过key获取value,还可以指定当key不存在时返回一个默认值,
dict_1={'a':1,'b':2,'c':22,'d':999}
print(dict_1.get('a'))
print(dict_1.get('nume'))
print(dict_1.get('nume','没有这个键'))
2、pop:通过key删除kv键值对
dict_1={'a':1,'b':2,'c':22,'d':999}
print(dict_1.pop('a'))
print(dict_1)
3、keys:返回所有的key
dict_1={'a':1,'b':2,'c':22,'d':999}
print(dict_1.keys())
4、values:返回所有的value
dict_1={'a':1,'b':2,'c':22,'d':999}
print(dict_1.values())
5、items:将每个KV键值对转换成二元数组并返回
dict_1={'a':1,'b':2,'c':22,'d':999}
print(dict_1.items())
6、clear:清空字典
7、通过in可以判断某个dict中是不是包含某个key
dict_1={'a':1,'b':2,'c':22,'d':999}
print(('a' in dict_1))
结果输出:True
五、set( )集合
1、set和dict类似,也是一组key的集合,但不存储value,
2、由于key不能重复,所以,在set中,没有重复的key。
3、set集合一般用于去重,或者是数学集合运算,如交、并、差等。
4、创建一个set:可以使用花括号{}或者是set()方法进行创建
5、注意:创建空集合,必须使用 set() ,而不是{},因为{}表示创建一个空的字典
例如:
set_1={1,2,4,54,1,2,3,4,99,88,52,99,99,99}
print(set_1)
其输出结果为:{1, 2, 99, 3, 4, 52, 54, 88}
六、集合的常见方法
1、add:向set集合中添加元素,若存在则去重,不存在则添加
set_1={123,456,66,88,888}
print(set_1)
set_1.add(99)
set_1.add(999)
set_1.add(999)
print(set_1)
结果如下:
2、remove:从set集合中移除元素,若不存在则报错
set_1={123,456,66,88,888}
set_1.remove(123)
print(set_1)
输出结果如图:
3、discard:同remove,也能移除元素,但当其不存在时,不会报错
4、pop:随机移除一个元素,因为set集合是无序的,用法同上
5、intersection:返回集合的交集
set_1={123,456,66,88,888}
set_2={123,456,78,46,111}
print(set_1.intersection(set_2))
其打印结果为:{456, 123}
6、union:返回集合的并集
set_1={123,456,66,88,888}
set_2={123,456,78,46,111}
print(set_1.union(set_2))
其打印结果为:{66, 456, 88, 46, 78, 111, 888, 123}
7、difference:返回集合的差集
set_1={123,456,66,88,888}
set_2={123,456,78,46,111}
print(set_1.difference(set_2))
其打印结果为:{888, 66, 88}
七、通过for...in循环可以遍历数据容器
1、遍历list列表:
2、遍历tuple元组
4、遍历set集合:
5、遍历dict字典
<1>直接遍历
dict_1={'a':1,'b':2,'c':22,'d':999}
for key in dict_1: #此处key为代称,也可使用i等
print(key)
其打印结果为:
<2>遍历keys:
dict_1={'a':1,'b':2,'c':22,'d':999}
for a in dict_1.keys():
print(a)
其结果为:
<3>遍历values:
dict_1={'a':1,'b':2,'c':22,'d':999}
for a in dict_1.values():
print(a)
其结果为:
<4>遍历items:
dict_1={'a':1,'b':2,'c':22,'d':999}
for a in dict_1.items():
print(a)
其结果为: