集合set({})是可变的数据类型,但里面的元素是不可变的,可哈希,无序,不重复的
即集合内不能包含列表,字典等
#集合的表示方式
set1=set({1,2,3,"as","we"})
set2={1,2,3,"as","we"}
print(set1)
print(set2)
>>>
{1, 2, 3, 'we', 'as'}
{1, 2, 3, 'we', 'as'}
set3={[1,2,3,3,4],{"name":"张三","age":"18"}}
print(set3)
>>>
set3={[1,2,3,3,4],{"name":"张三","age":"18"}}
TypeError: unhashable type: 'list'
#冻结集合,不可变数据类型,与集合刚好相反,但也是无序,不重复的,冻结集合不可增,删,只能查
set1={"张三","李四","王五"}
set2=frozenset("ABCD")
print(set1,type(set1))
print(set2,type(set2))
>>>
{'李四', '张三', '王五'} <class 'set'>
frozenset({'C', 'A', 'B', 'D'}) <class 'frozenset'>
1.增
set1={"张三","李四","王五"}
set1.add("alen")#新增元素到集合中
print(set1)
>>>{'张三', '王五', '李四', 'alen'}
set1={"张三","李四","王五"}
set1.update("abc")#是增加最小元素到集合中
print(set1)
>>>{'c', 'a', '王五', 'b', '李四', '张三'}
2.删
set1={"张三","李四","王五"}
print(set1.pop())#有返回值,是随机删除
print(set1)
>>>
张三
{'李四', '王五'}
set1={"张三","李四","王五"}
print(set1.remove("王五"))#无返回值,指定元素删除
print(set1)
》》》
None
{'张三', '李四'}
set1={"张三","李四","王五"}
print(set1.clear())#无返回值,清空列表
print(set1)
》》》
None
set()#空列表
set1={"张三","李四","王五"}
del set1#删除列表
print(set1)
》》》
print(set1)
NameError: name 'set1' is not defined
3.查
set1={"张三","李四","王五"}
for i in set1:#集合是无序的,输出的结果也不是每次都一样的
print(i)
>>>
张三
王五
李四
4.其他
#交集
set1={"张三","李四","王五"}
set2={"张三","Green","Jack"}
print(set1&set2)
print(set1.intersection(set2))
》》》
{'张三'}
{'张三'}
#并集
set1={"张三","李四","王五"}
set2={"张三","Green","Jack"}
print(set1|set2)
print(set1.union(set2))
》》》
{'李四', 'Green', 'Jack', '张三', '王五'}
{'李四', 'Green', 'Jack', '张三', '王五'}
#差集,第一个集合除了与第二个集合共有之外的元素
set1={"张三","李四","王五"}
set2={"张三","Green","Jack"}
print(set1-set2)
print(set1.difference(set2))
》》》
{'李四', '王五'}
{'李四', '王五'}
#反交集,除了共有的元素之外,各集合的元素组合在一起
set1={"张三","李四","王五"}
set2={"张三","Green","Jack"}
print(set1 ^ set2)
print(set1.symmetric_difference(set2))
》》》
{'Green', '李四', '王五', 'Jack'}
{'Green', '李四', '王五', 'Jack'}
#子集与超集
set1={"张三","李四","王五"}
set2={"张三","李四","王五","Green","Jack"}
print(set1 < set2) #set1是set2的子集,set2是色图的超集
print(set1.issubset(set2))#set1是set2的子集,set2是色图的超集
》》》
True
True
网友评论