Python集合,固定集合,集合推导式,构造函数,常用方法

Python集合,固定集合,集合推导式,构造函数,常用方法

Python集合,固定集合,集合推导式,构造函数,常用方法

集合:set

集合是可变的容器

集合内的数据对象是唯一的(不能重复多次的)

集合是无序的存储结构,集合中的数据没有先后关系

集合内的元素必须是不可变的对象

集合是可迭代的

集合是相当于只有键没有值的字典(键则是集合的数据)

创建集合:

s = set() 创建一个空的集合

s = set(可迭代对象) 用可迭代对象创建一个新的集合对象

s = {1, 2, 3} 集合中的三个整数1,2,3

如:

s = set("ABC")  => ('A','B','C')

s = set('ABCABC') => ('A','B','C')  #不会重复

s = set({1:'aA',2:'dd'})

s = set([1,2,[1,2],4])  => 报错,[1,2]是可变的对象无法生成固定的哈希值

集合的运算:

&  生成两个集合的交集  (共有部分)

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有,s2没有的集合)

s1 = {1,2,3}

s2 = {2,3,4}

s1 - s2 => {1}

^  生成两个集合的对称补集  (生成s1有,s2没有的,和s2有,s1没有的)

s1 = {1,2,3}

s2 = {2,3,4}

s1 ^ s2 => {1,4}

<  判断一个集合是否是另一个集合的子集

>  判断一个集合是否是另一个集合的超集

s1 = {1,2,3}

s2 = {2,3}

s2 是 s1 的子集,s1 是 s2 的超集

==  !=  判断集合相同/不同

s1 = {1,2,3}

s2 = {2,3,1}

s1 == s2  #True

s1 != s2  #False   集合没有先后顺序

in / not in 运算符

等同于字典,in 运算符用于集合中,当某个值存在于集合中,则为真,否则为假

not in 与 in 返回值相反

如:

s = {1, 'two', 3}

1 in s #True , 2 in s #False , 3 not in s #False , 4 not in s #True

python3中可用于集合的函数:len() max() min() sum() any() all()


集合是可迭代对象

s = {1,2,3}

for x in s:

print(x)

集合的方法:

S.add(元素) 把元素往集合中添加

S.remove(元素) 删除元素,元素不存在会报错

S.discard(元素) 删除元素,不会报错

S.clear() 清空集合

S.copy() 拷贝一个集合

S.pop() 从集合中删除一个随机元素,集合为空时会报错

S.update(s2) 用S与S2得到的全集更新变量S

S.difference(s2) 用S-S2运算,返回存在于在S中但不在S2中的所有元素

S.difference_update(s2) 等同于 S = S - S2

S.intersection(s2) 等同于 S & S2

S.intersection_update(s2) 等同于 S = S & S2

S.isdisjoint(s2) 如果S与S2交集为空返回True 否则 False

S.issubset(S2) 如果S与S2交集为非空返回True 否则 True

S.isuperset(s2) 如果S2 S2 的子集返回 True 否则 False

S.symmetric_difference(s2) 返回对称补集,等同于 S^s2

S.symmetric_difference_update(s2) 用S与S2的对称补集更新S

S.union(s2) 生成S与S2 的全集

集合推导式:用可迭代对象来创建集合的表达式

语法:{表达式 for 变量 in 可迭代对象 [if 真值表达式]}

如: L = [2,3,5,7,3,5,7,11]

s = {x**2 for x in L} => {4,9,25,49,121}

固定集合:是不可变的,无序的,含有唯一元素的集合

作用:固定集合可以作为字典的键,也可以作为集合的值

创建一个空的固定集合

fs = forzenset()

创建一个非空的固定集合

fs = forzenset([2,3,5,7])

构造函数:forzenset([可迭代对象])


最后编辑于:2019/07/21作者: 牛逼PHP

发表评论