- 集合 set
集合是可变的容器
集合内的数据对象是唯一的(不能重复多次的)
集合是无序的存储结构,集合内的数据没有先后关系
集合内的元素必须是不可变的对象
集合是可迭代对象
集合相当于只有键没有值的字典(键是集合的数据)
创建空的集合:
set()
创建非空的集合的字面值:
s = {1,2,3}
集合的构造函数:
set() 创建一个空的集合(不能用{}来创建空集合)
set(interable) 用可迭代对象创建一个新的集合
示例:
s = set()
s = {2,3,5,7}
s = set("ABC") #s = {'A','B','C'}
s = set({1:'1',2:'2',5:'5',}) #s = {1,2,5}
s = set(('ABC','123','True'))
s = {True,None,'abc',(1,2,3)}
python3中不可变数据类型:
bool, int, float, complex, str, tuple, frozenset, bytes
可变的数据类型:
list,dict,set,bytearray
集合的运算:
交集& 并集| 补集- 对称补集 ^ 子集< 超集 >
&用于生成两个集合的交集
s1 = {1,2,3}
s2 = {2,3,4}
s1&s2 #{2,3}
|用于生成两个集合的并集
s1 = {1,2,3}
s2 = {2,3,4}
s1|s2 #{1,2,3,4}
-生成两个集合的补集
s1 = {1,2,3}
s2 = {2,3,4}
s1-s2 #{1} 生成属于s1不属于s2的元素
s2-s1 #{4} 生成属于s1不属于s2的元素
^生成两个集合的对称补集
s1 = {1,2,3}
s2 = {2,3,4}
s1^s2 #{1,4} 属于s1不属于s2,属于s2又不属于s1,的元素的并集
>判断一个集合是另一个集合的超集
<判断一个集合是另一个集合的子集
s1 = {1,2,3}
s2 = {2,3}
s1 > s2 #True
s2 < s1 #True
== != 集合相同/不同
s1 = {1,2,3}
s2 = {3,2,1}
s1 == s2 #True
in /not in运算
同列表的字典的in运算符规则相同,如果存在于集合中返回True,否则返回False
示例:
2 in {1,2,3} #True
用于函数的集合
len(x) 返回集合的长度
max(x)返回集合的最大值元素
min(x) 返回集合的最小值元素
sum(x) 返回集合中所有的元素的和
any(x) 真值测试,规则与列表相同
all(x) 真值测试,规则与列表相同
集合时可迭代对象,可以用于for 语句中
集合的方法:
详见:
>>>help(set)
文档参见;
set.html
集合不支持索引,要将集合中的值取出只能用迭代的方法,不能修改
集合推导式:
用可迭代对象创建集合的表达式
语法:
{表达式 for 变量 in 可迭代对象[if 真值表达式]}
[]部分代表可以省略
示例:
numbers = [1,3,5,7,9,3,4,5,6,7,8]
s = {x ** 2 for x in numbers if x % 2 == 1}
print(s) #{81, 1, 49, 9, 25}
固定集合 frozenset
固定集合是不可变的,无序的,含有唯一元素的集合
作用:
固定集合可以作为字典的键,也可以作为集合的值
固定集合的构造函数 frozenset
frozenset() 创建一个空的固定集合
frozenset(interable) 用可迭代对象创建一个新的固定集合
示例:
fz = frozenset()
fz = frozenset("ABCABC")
fz = frozenset([1,2,3,4,5])
固定集合的运算:
& 交集
| 并集
- 补集
^ 对称补集
in / not in 运算
> >= < <= == !=
(以上运算等同于集合的运算)
固定集合的方法:
相当于集合的全部方法去掉修改集合的方法