阅读 192

猪行天下之Python基础——3.4 集合

内容简述:

  • 1、集合(Set)

1、集合(Set)

列表元组通过索引查找元素,字典通过键来查找元素,而接下来的集合无法去索引某个具体的元素,集合里的元素「无序」,且「自动去重」,使用「{}大括号」包裹元素,使用逗号进行分隔。另外有一点要注意:创建 空集合 必须使用 set()函数 来构建,而不能直接用{},直接一个{}的话,会直接创建一个空字典,而 不是一个空集合


① 集合的基本操作

代码示例如下

# 1.集合创建
set_1 = set() # 创建一个空集合
set_2 = {1234512# 普通方式创建集合,重复元素会被自动删除
set_3 = set('12345'# 通过字符串构建,注意元素无序
set_4 = frozenset({1,2,3,4}) # 创建一个不可变集合

print("1.集合创建:")
print(set_1)
print(set_2)
print(set_3)
print(set_4)

# 2.判断元素是否在集合中
print("\n2.元素是否在集合中:")
print('集合中有6这个元素:%s' % (6 in set_1)) # 判断集合中是否有此元素
print('集合中没有7这个元素:%s' % (7 not in set_1)) # 判断集合中是否有此元素

# 3.集合增删元素
print("\n3.增删集合中的元素:")
set_1.add(6)
print("往集合中插入一个元素6后:%s" % set_1)

set_1.remove(6# 如果删除的元素不存在会报错,建议先判断下是否存在运算再删除
print("往集合中删除一个元素6后:%s" % set_1)

set_1.discard(6# 删除集合中的一个元素,如果元素不存在,不执行任何操作
print("删除集合中的一个元素6后:%s" % set_1)

set_2.pop() # 无序随机删除并返回任意一个集合元素,集合为空会引发KeyError
print("随机弹出集合中的一个元素后:%s" % set_2)

# 4.集合遍历
print("\n4.遍历集合中的元素:\n set_2 =", end='')
for data in set_2:
    print(data, end='\t')

# 5.清空集合
set_2.clear()
print("\n\n5.清空集合中的元素 :%s" % set_2)
复制代码

运行结果如下

1.集合创建:
set()
{12345}
{'5''3''1''4''2'}
frozenset({1234})
2.元素是否在集合中:
集合中有6这个元素:False
集合中没有7这个元素:True
3.增删集合中的元素:
往集合中插入一个元素6后:{6}
往集合中删除一个元素6后:set()
删除集合中的一个元素6后:set()
随机弹出集合中的一个元素后:{2345}
4.遍历集合中的元素:
set_2 =2    3   4   5 
5.清空集合中的元素 :set()
复制代码

② 集合运算相关的操作

代码示例如下

set_1 = {'a''b''c''d''e''f'}
set_2 = set('cdefgh')
set_3 = set('ab')


# 进行数学集合运算
# 子集,集合为某个集合的一部分,使用操作符<,或issubset()进行判断
print('集合set_2是集合set_1的子集:%s' % (set_2 < set_1))
print('集合set_3是集合set_1的子集:%s' % (set_3.issubset(set_1)))

# 并集,两个集合所有元素构成的集合,使用操作符 | 或 union() 函数完成
print("集合set_1和集合set_2的并集:%s" % (set_1 | set_2))
print("集合set_1和集合set_2的并集:%s" % (set_1.union(set_2)))

# 交集,同时存在于两个集合中的元素构成的集合,使用操作符 & 或 intersection() 函数完成
print("集合set_1和集合set_2的交集:%s" % (set_1 & set_2))
print("集合set_1和集合set_2的交集:%s" % (set_1.intersection(set_2)))

# 差集,集合里有另一个集合里没有的元素构成的集合,使用操作符 - 或 difference() 函数完成
print("集合set_1和集合set_2的差集:%s" % (set_1 - set_2))
print("集合set_1和集合set_2的差集:%s" % (set_1.difference(set_2)))

# 对称差,只属于其中一个集合而不属于另一个集合的元素组成的集合
# 或者理解成全集除去交集部分元素后剩下的元素组成的集合
# 使用操作符 ^ 或 symmetric_difference() 函数完成
print("集合set_1和集合set_2的对称差:%s" % (set_1 ^ set_2))
print("集合set_1和集合set_2的对称差:%s" % (set_1.symmetric_difference(set_2)))
复制代码

运行结果如下

集合set_2是集合set_1的子集:False
集合set_3是集合set_1的子集:True
集合set_1和集合set_2的并集:{'h''b''d''c''f''g''e''a'}
集合set_1和集合set_2的并集:{'h''b''d''c''f''g''e''a'}
集合set_1和集合set_2的交集:{'c''e''d''f'}
集合set_1和集合set_2的交集:{'c''e''d''f'}
集合set_1和集合set_2的差集:{'b''a'}
集合set_1和集合set_2的差集:{'b''a'}
集合set_1和集合set_2的对称差:{'h''b''g''a'}
集合set_1和集合set_2的对称差:{'h''b''g''a'}
复制代码

如果本文对你有所帮助,欢迎
留言,点赞,转发
素质三连,谢谢😘~