tuple 元组
,其实跟列表差不多,存一组数,一旦创建,不能修改。叫做只读列表
tuple1 = (1,2) tuple2 =1,2 tuple2 = 1, tuple2 = tuple([123]),
元组和列表的区别
特性: 不可变 元组本身不可变(不能利用索引修改里面元素的数值),如果元组中包含其他可变元素,那么这些可变元素可以改变
操作:
Tuple.index(self, value, start=None, stop=None)
Tuple. count(self, value)
Tuple.[:]
字典{用大括号}
采用键值对的形式进行保存
字典 特性
1.key-value结构
2.key必须为不可变数据类型、必须唯一,不可位列表
3.可存放任意多值、可修改、可以不唯一
4.无序
5.查找速度快
a = {} 或者 a = dict()
打印字典中某个数值的时候,使用dict[x]。使用的是中括号,x代表的是键的名字.
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住(后一个把前一个相同的键对应的数值覆盖)
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。
注意:1字典的键值是"只读"的,所以不能对键和值分别进行初始化
2字典是支持无限极嵌套的
操作:
1.Dict.fromkeys(seq, value)
将创建一个新字典,序列中的每个元素成为一个新键,键对应的数值是value,如果value不指定的话,则新的字典对应的值是None
2.Dict.get(key, default=None)
返回key对应到值,若不存在,返回None
3.dict[x]返回x对应的数值,若不存在,报错KeyError
4.dict.keys() 返回字典中所有的键 可以使用 list() 来转换为列表,列表为字典中的所有键。
dict.values() 返回字典中所有的值 可以使用 list() 来转换为列表,列表为字典中的所有值。
5.dict. items()返回可遍历的(键, 值) 元组数组
6…增加
1)修改值:a[key] = value
如果key存在于字典,则修改成新的value,如果不存在,则增加一个key,对应的值是value
2)dict. setdefault(key, default=None)
如果键不已经存在于字典中,将会添加键默认值是None。如果存在则不修改寄存的值
3) update(dict2)
字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里,如果存在同样的key,则覆盖原来的key
7.删除
- dict. popitem()随机返回并删除字典中的一对键和值
- dict. pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
遍历时候推荐使用一下方法不推荐使用 dict.items()方法:
For I in dict.keys();
Print(“{} => {}”.format(I,dict[i]))
两者区别:dict.items()将元素转黄成元组在打印,当数据量过大时消耗内存过大,耗时长。
集合
集合(set)是一个无序不重复元素的序列。
特征:
- 确定性
- 互异性(去重)
- 无序性(集合中的元素没有先后之分,(1,2,3)和(2,3,1)是一样的)
- 整数,浮点数,布尔值,复数,字符串,元组,冰冻集合,但是不能有列表
定义:
parame = {value01,value02,…}
parame = set()rd
a = set((“hello”))
print(a)
a = set(“hello”)
print(a)
{‘o’, ‘l’, ‘h’, ‘e’}
{‘o’, ‘l’, ‘h’, ‘e’}
创建一个含有一个元素的集合
a = set((“hello”,))
print(a)
实行结果:{‘hello’}
减法:a – b: 只找集合a中包含元素
a = set(“qwer123”)
b = set(“qwcd1”)
print(a - b)
实行结果:{‘3’, ‘r’, ‘2’, ‘e’}
a | b: 集合a或b中包含的所有元素
a = set(“qwer123”)
b = set(“qwcd1”)
print(a | b)
实行结果:{‘2’, ‘r’, ‘3’, ‘c’, ‘e’, ‘d’, ‘1’, ‘w’, ‘q’}
a & b:集合a和b中都包含了的元素
a = set(“qwer123”)
b = set(“qwcd1”)
print(a & b)
实行结果:{‘1’, ‘w’, ‘q’}
a ^ b:不同时包含于a和b的元素
a = set(“qwer123”)
b = set(“qwcd1”)
print(a ^ b)
实行结果:{‘e’, ‘3’, ‘2’, ‘r’, ‘d’, ‘c’}
增加集合:
- s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。 - s.update( x )
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典. x 可以有多个,用逗号分开。(二维列表为什么不能添加?)
s.update( {“字符串”} ) 将字符串添加到集合中,有重复的会忽略。
s.update( “字符串” ) 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。
删除:
1.s.remove( x )
将元素 x 添加到集合 s 中移除,如果元素不存在,则会发生错误。 - s.discard( x )
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。(是否只能删除一个元素,而列表和元祖等删除就发生错误)
a.discard([2, 3])
TypeError: unhashable type: ‘list’ - s.pop()
随机删除集合中的一个元素(没有随机删除,只是删除了第一个元素)
其他: - len(s)
求集合的长度 - s.clear()
清空集合 - x in s
判断元素是否在集合中存在
difference()
4.差集
格式:集合1.difference(集合2)
返回值:集合
操作:获取存在于集合1但是不存在与集合2中的数据的集合
difference_update()
5.差集 更新
格式:集合1.difference(集合2)
返回值:无 直接将结果赋值给集合1
操作:获取存在于集合1但是不存在与集合2中的数据的集合
intersection()
6.交集
格式:集合1.intersection(集合2)
返回值:集合
操作:获取即存在于集合1又存在于集合2中的数据组成的集合
intersection_update()
7.交集更新
格式:集合1.intersection_update(集合2)
返回值:None 直接将结果赋值给集合1
操作:获取即存在于集合1又存在于集合2中的数据组成的集合
union()
8.并集
格式:集合1.union(集合2)
返回值:集合
操作:将集合1和集合2中所有数据新建一个集合(去重)
update()
9.并集更新
格式:集合1.update(集合2)
返回值:无 直接将结果赋值给集合1
操作:将集合1和集合2中所有数据新建一个集合(去重)
issuperset()
10.检测一个集合是不是另外一个集合的超集
格式:集合1.issuperset(集合2)
返回值:布尔值
issubset()
11.检测一个集合是不是另外一个集合的子集
格式:集合1.issubset(集合2)
返回值:布尔值
issubset
isdisjoint()
11.检测2个集合是否不相交
格式:集合1.isdisjoint(集合)
返回值:布尔值
symmetric_difference()
12.对称差集操作
格式:集合1.symmetric_difference(集合2)
返回值:集合
操作:将集合1和集合2不相交的部分取出组成的新的集合
symmetric_difference_update()
13.对称差集更新操作
格式:集合1.symmetric_difference(集合2)
返回值:None 直接将结果赋值给集合1
操作:将集合1和集合2不相交的部分取出组成的新的集合
注意:集合可以有任意数量的元素,它们可以是不同的类型(例如:数字、元组、字符串等)。但是,集合不能有可变元素(例如:列表、集合或字典)
冰冻集合/固定集合 frozenset
冰冻集合就是一旦创建,不可以在进行任何修改的集合。
创建空的冰冻集合
变量 = frozenset()
创建多个元素的集合
变量 = frozenset(容器类数据)
冰冻集合的遍历
for 变量 in 冰冻集合:
使用变量
推导式:
普通的集合推导式
变量={i for i in 集合}
带有判断条件的推导式
变量={i for i in 集合 if}
多循环推导式
变量 = {i+j for i in 集合1 for j in 集合2}
带有判断条件的多循环推导式
变量 = {i+j for i in 集合1 for j in 集合2 if 条件表达式}