python全栈闯关--7-2、集合

集合:可变的数据类型,他里面的元素必须是不可变的数据类型

特点:1、无序

     2、不重复

 

1、set定义

# 使用set定义
set1 = set({1, 2, 3})
# 直接使用括号定义
set1 = {1, 2, 3}
# 空集合定义方式,直接写{}会定义成字典
set1 = set({})
print(set1, type(set1))  # set()空集合结果显示为set(),空字典显示为{}

错误示范:

# 因为列表、字典是可变数据类型,报错
# TypeError: unhashable type: 'list'
set2 = {1, 2, 3, [2, 3], {'name': 'alex'}}
print(set2, type(set2))

 

2、增

set1.add('Gigi')  # Gigi做为一个元素增加
print(set1)

set1.update('abc')  # 拆分为最小元素,添加到集合{'b', 'beer', 'a', 'c'....}
print(set1)

update类似list的extend

 

3、删

print(set1.pop())  # 随机删除,本返回值
print(set1)

set1.remove('beer')  # 按照元素删除
print(set1)

set1.clear()  # 清空集合
print(set1)  # set()

del set1  # 从内存中删除,删除后set1不存在
print(set1)

 

4、查

for i in set1:
    print(i)

 

5、集合的操作

# 交集,set1和set2所共有
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1 & set2
print(set3)
print(set1.intersection(set2))

# 合集,set1和set2全部元素的集合
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(set1 | set2)
print(set1.union(set2))

# 反交集,set1和set2不共有的元素
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(set1 ^ set2)
print(set1.symmetric_difference(set2))

# 差集,set1有,而set2没有
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(set1 - set2)
print(set1.difference(set2))

# 子集,set1的所有元素是不是在set2中,是返回True
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5, 6}
print(set1 < set2)
print(set1.issubset(set2))

# 超级,set2是否包含set1的所有元素,是返回True
print(set2 > set1)
print(set2.issuperset(set1))

 

6、冻结集合

set2 = {1, 2, 3, 4, 5, 6}
s = frozenset(set2)
print(s, type(s))
print(s, type(s))
print(s, type(s))
print(s, type(s))
# frozenset({1, 2, 3, 4, 5, 6}) <class 'frozenset'>

frozenset方法,使集合冻结。冻结后,顺序不会发生改变,类型为:<class 'frozenset'>

 

posted @ 2019-09-26 15:35  熊熊闯深林  阅读(199)  评论(0编辑  收藏  举报