元组
用途:存储多个不同类型的值(不能存可变类型)
定义方式:
用小括号存储数据,数据与数据之间通过逗号分隔,值不能变
定义容器类型时,如果里面只有一个值,在值后+逗号
元组中不加逗号,就是字符串
t1=(‘a’,‘b’) t1=tuple(‘a’,'b')
常用方法:
1.索引取值:(正向取值,反向取值)
2.索引切片
3.成员运算
4.len()
5.count()
6.index
有序,不可变 ,存多个值
字典
用途:key一定是一个不可变类型,value可以时任意类型
定义方式:通过大括号来存储数据,通过key-value来定义键值对数据,每个键值对中间通过逗号隔开
字典的三种定义方式:
1.d1={'name': 'egon'}
2.s1=dict(name='sean',age=18)
3.zip
l1=['name','age']
l2=['egon',18]
z1=zip(l1,l2)
print(dict(z1))
常用方法:
1.按照key—value映射关系取值(可存可取)
d1 = {'name': 'egon', 'age': 73} d1['name'] = 'tank' d1['gender'] = 'male' print(d1) {'name': 'tank', 'age': 73, 'gender': 'male'}
2.成员运算
in,not in 默认判断key
3.len()获取字典中,键值对的个数
内置方法:
1.get:获取指定的key的值,如果值不存在,默认返回None
d1 = {'name': 'egon', 'age': 73} # d1['name'] = 'tank' # # d1['gender'] = 'male' # # print(d1) print(d1.get('name', '&')) print(d1.get('gender', '&'))
egon
&
2.keys,values,items
keys返回所有key
values返回所有的值
items返回所有的键值对,返回值是列表套元组,每一个键值对存在元组
d1 = {'name': 'egon', 'age': 74} print(d1.keys()) print(d1.values()) print(d1.items()) dict_keys(['name', 'age']) dict_values(['egon', 74]) dict_items([('name', 'egon'), ('age', 74)])
3.pop删除:指定key删除,有返回值,返回为对应的value
d1 = {'name': 'egon', 'age': 74} print(d1.pop('name')) print(d1) egon {'age': 74}
4.popitem:随机弹出一个键值对,有返回值,返回值是一个元组
d1 = {'name': 'egon', 'age': 74} print(d1.popitem()) ('age', 74)
5.update():用新字典替换旧字典,有则修改,无则添加
d1 = {'name': 'egon', 'age': 74} # print(d1.popitem()) d1.update({'gender': 'female'}) d1.update({'name': 'gdd'}) print(d1) {'name': 'gdd', 'age': 74, 'gender': 'female'}
6.fromkeys:产生一个新字典,第一个参数(列表),它会以第一个参数中各个元素为key,以第二个参数为值,组成一个新的字典
d1 = {'name': 'egon', 'age': 74} print(d1.fromkeys([1, 2, 3], 'ke')) {1: 'ke', 2: 'ke', 3: 'ke'}
7.setdefault: key不存在新增键值时,有返回值,key存在返回对应的value
d1 = {'name': 'egon', 'age': 74} # print(d1.fromkeys([1, 2, 3], 'ke')) print(d1.setdefault('gender', 'female')) d1.setdefault('gender', 'female') print(d1) d1.setdefault('name', 'wangba') print(d1) female {'name': 'egon', 'age': 74, 'gender': 'female'} {'name': 'egon', 'age': 74, 'gender': 'female'}
集合
用途:去重,关系运算
定义方式:通过大括号存储,每个元素通过逗号分隔
定义空集合,必须使用set()来定义
l1=[]
l2=""
l3={}
l4=set()
常用方法:
1.没有索引
合集:| 求两个用户的所有好友,重复的只留一个
交集:& 两个用户的共同好友
差集:- 1-2求用户1独有的好友
对称差集:^ 求两个用户独有的好友,即去除共同好友
父集: > >= 一个集合是否包含另一个集合
子集: < <=
集合中不可能出现两个相同的元素
无序,可变,存多个值
可以增加,删除,但是不能修改
ps:frozenset时不可变集合
总结:
存一个值:数字,字符串
存多个值:列表,元组,字典,集合
可变:列表,字典,set集合
不可变:数字,字符串,元组,fonzenset集合
有序或无序
有序:字符串 列表 元组
无序:集合 字典
占用内存:
字典
列表
元组
集合
字符
数字
集合:
三大特性:
1.值不可以重复
2.无序
3.存储的元素必须是不可变的
remove:值没有时会报错
discard:值没有事不会报错
# 字典在被迭代的时候,不可以对其里面的值进行修改
dict1 = {
'1': 1,
'2': 2,
}
for k, v in dict1.items():
print(k, v)
dict1.pop(k)
RuntimeError: dictionary changed size during iteration
# 列表在被迭代时,可以对其值进行修改
list1 = [1, 2, 3]
for k in list1:
print(k)
if k == 1:
list1.pop(k)
1
3