1. 元组
1.1 元组简介
- 元组,类型是tuple,是一个不可变序列;
- 一般情况下,我们不希望数据改变时,使用元组,其余的用列表;
- 空元组,();
- 创建元组的方式,如果一个元组不是空元组,它里面至少含有一个“ ,”
my_tuple = ()
my_tuple = (10,20,30,40)
my_tuple = 10,20,30,40 - 索引,my_tuple[ 3 ],打印结果为 40 ;
- 元组解包
元组解包:将元组中的每一个元素赋值给一个变量,在解包时,变量的数量和元组的数量要保持一致,如果不一致,可以在变量前加一个“ * ”,这样可以获取元组中剩余的元素并以列表的形式返回;
例如:
my_tuple = (10,20,30,40)
a,b,c,d = my_tuple
打印 a = 10, b = 20, c = 30, d = 40;
a,b,*c = my_tuple
打印 a = 10, b = 20, c = [30, 40]; - 解包适用于所有的序列。
2. 字典
2.1 字典简介
- 字典,类型是dict;
- 字典的数据结构,映射(mapping);
- 用于存储对象的容器,和列表类似;
- 列表存储数据的性能比较好,但查询性能比较差,字典正好相反;
- 在字典中,每一个元素都有唯一一个名与之对应,我们可以通过名来查询到指定的元素;
- 我们将这个名称之为键(key),通过键我们可以找到值(value);
- 所以我们也将字典称之为键值对(key–value);
- 字典中可以有很多键值对,每一对键值对我们称之为项(item);
- 创建字典的方式
语法:{key : value , key : value , key : value …}
d = {“name” : "钢铁侠“ , “age” : 39 , “gender” : “男”}
d = {
“name” : "钢铁侠“ ,
“age” : 39 ,
“gender” : “男”
} - 通过键查询值
print(d[“name” , “age” , ”gender"])
2.2 字典的使用
- 通过函数创建
语法:d = dict(key=value,key=value…)
d = dict(name="钢铁侠“,age=39,gender="男”)
语法:d = dict([(key,value),(key,value)…])
dict函数可以将双值子序列转化为字典
双值子序列
双值序列:序列中只有两个值 [1,2] “ab”
双值子序列:指子序列为双值序列,[(“a”,1),(“b”,2)]
d = dict([(“name”,“钢铁侠”),(“age”,39),(“gender”,"男)]) - len()函数:获取字典中键值对的个数
例如:d = {“name” : "钢铁侠“ , “age” : 39 , “gender” : “男”}
print( len(d)) --> 3 - in :检查字典中是否含有指定的键
例如:d = {“name” : "钢铁侠“ , “age” : 39 , “gender” : “男”}
print(“name” in d) --> True - not in :检查字典中不含指定的键
例如:d = {“name” : "钢铁侠“ , “age” : 39 , “gender” : “男”}
print(“name” not in d) --> False - d.get(key,[default]):通过键获取对应的值,如果字典中没有该键,返回值为None,如果指定默认值[default],则返回默认值;
- d[key]=value,修改字典
d = {“name” : "钢铁侠“ , “age” : 39 , “gender” : “男”}
d[“name”]=“雷神” -->若key存在,则修改字典中的key-value
d[“phone”] = “12345678” -->若key 不存在,则向字典中的添加key-value
print(d) --> d = {“name” : "钢铁侠“ , “age” : 39 , “gender” : “男”,“phone”: “12345678”} - d.setdefault(key,[value])
d = {“name” : "钢铁侠“ , “age” : 39 , “gender” : “男”}
d.setdefault(“name”,“雷神”)–> 当指定键存在,对字典没有影响,并返回该键在字典中的值
print(d.setdefault(“phone” ,“12345678” ) --> "12345678“ --> 当指定键不存在,则将该键和值添加在字典的最后
print(d) --> d = {“name” : "钢铁侠“ , “age” : 39 , “gender” : “男”,“phone”: “12345678”} - d.update():将其他字典中的key-value添加到当前的字典当中
- del 删除字典中的key-value键值对
d = {“name” : "钢铁侠“ , “age” : 39 , “gender” : “男”}
del d[“name”] --> d = {“age” : 39 , “gender” : “男”} - d.popitem():随机删除字典中的键值对,一般删除字典中的最后一对;它会将删除的键值对作为返回值,返回的是一个元组,元组有2个元素,第一个元素是删除的键,第二个元素是删除的值;
- d.pop(key,[default]):通过键删除指定的键值对,并返回删除的值,也可以添加默认值,若删除的键不存在,则返回默认值;
- d.clear()是用来清空字典。
2.3 浅复制
- 语法:d.copy()
- 用于对字典进行一个浅复制
- 复制以后的对象,和原对象是独立的,修改一个不会影响另一个,浅复制只会复制字典的本身,如果字典中还有字典,是不会被复制的。
2.4 遍历字典
- d.keys():该方法返回的是一个序列,保存的是字典中所有的键;
- d.values():该方法返回的是一个序列,保存的是字典中所有的值;
- ditems():该方法返回的是一个序列,保存的是字典中所有的项;
- 通过for循环进行遍历
3. 集合
3.1 集合的概念
- 集合 set()
- 集合和序列非常相似
- 集合和序列的不同点
集合中只能存储不可变对象
集合中的元素是无序的
集合中的元素是不可重复的 - 可以通过set()函数将序列转化为集合
- 集合不能通过索引获得对应的元素
3.2 集合的使用
- in 和 not in
in :判断对象是否在集合当中
not in :判断对象不在集合当中 - len()
计算集合的长度,里面对象的个数 - s.add()
在集合中增加一个对象 - s.update()
s1.update(s2):用集合s2更新集合s1 - s.remove()
移除集合中某个对象 - s.pop()
随机删除集合中某个对象,并返回删除值 - s.clear()
清空集合
3.3 集合的运算
- 交集运算 & :求两个集合的交集;
- 并集运算 | :求两个集合的并集;
- 差集运算 - :求两个集合的差集;
- 异或集运算 ^ :求两个集合的异或集;
- s1 <= s2 :判断s1是否为s2的子集;
- s1 < s2 :判断s1是否为s2的真子集;
- s1 >= s2 :判断s1是否为s2的超集;
- s1 > s2 :判断s1是否为s2的真超集;