本文共 2123 字,大约阅读时间需要 7 分钟。
集合是一种用于 去重 和 关系运算 的数据结构。它的主要作用是将不同的值存放在一起,便于进行集合运算。
集合可以包含多个元素,每个元素之间用逗号分割。集合的定义非常简单:集合中的每个元素必须是 不可变类型,并且集合中的元素是唯一的。集合的存储顺序与元素的插入顺序无关,集合中的元素是无序存储的。
集合遵循以下三个原则:
补充: 可变类型是不可hash的类型。例如,列表、字典等不可变类型是可hash的,而字符串也是可hash的。
可以通过 len() 函数来获取集合的元素个数。
s = {'asd', 'zxc', 1, 2}print(len(s)) # 输出:4 可以通过 in 和 not in 运算符来检查元素是否存在于集合中。
set = {'asd', 'zxc', 1, 2}a = 1 in setprint(a) # 输出:Truea = 1 not in setprint(a) # 输出:False 可以使用 | 运算符来合并两个集合。
python_l = ['lcg', 'szw', 'zjw', 'lcg']linux_l = ['lcg', 'szw', 'sb']p_s = set(python_l)l_s = set(linux_l)print(p_s | l_s) # 输出:{'lcg', 'szw', 'zjw', 'sb'} 可以使用 & 运算符来获取两个集合的交集。
python_l = ['lcg', 'szw', 'zjw', 'lcg']linux_l = ['lcg', 'szw', 'sb']p_s = set(python_l)l_s = set(linux_l)print(p_s & l_s) # 输出:{'lcg', 'szw'} 可以使用 - 运算符来获取两个集合的差集。
python_l = ['lcg', 'szw', 'zjw', 'lcg']linux_l = ['lcg', 'szw', 'sb']p_s = set(python_l)l_s = set(linux_l)print('差集', p_s - l_s) # 输出:{'zjw'}print('差集', l_s - p_s) # 输出:{'sb'}print(l_s.difference(p_s)) # 输出:{'sb'} 可以使用 issubset()、issuperset() 和 superset() 等方法来判断集合之间的关系。
s1 = {1, 2}s2 = {1, 2, 3}print(s1.issubset(s2)) # 输出:Trueprint(s2.issubset(s1)) # 输出:Falseprint(s2.issuperset(s1)) # 输出:True 可以使用 pop() 方法随机删除集合中的一个元素。
s = {'sb', 1, 2, 3, 4, 5, 6}s.pop() # 随机删一个元素 可以使用 remove() 和 discard() 方法来删除集合中的元素。remove() 方法会抛出异常,如果元素不存在;而 discard() 方法不会抛出异常。
s = {'sb', 1, 2, 3, 4, 5, 6}s.remove('sb') # 删除元素'sb's.remove('hellol') # 元素不存在,会抛出异常s.discard('sbbbb') # 删除元素不存在不会报错print(s) # 输出:{1, 2, 3, 4, 5, 6} 可以使用 update() 方法来更新集合中的元素。如果要添加多个元素,可以将它们放入一个列表或元组中传递给 update() 方法。
s1 = {1, 2}s2 = {1, 2, 3}s1.update(s2) # 更新后的集合为:{1, 2, 3}s1 = {1, 2, 3}s2 = {'alex'}s1.update(s2) # 更新后的集合为:{1, 2, 3, 'a', 'l', 'e', 'x'} 可以使用 ^ 运算符来获取两个集合的交叉补集。
python_l = ['lcg', 'szw', 'zjw', 'lcg']linux_l = ['lcg', 'szw', 'sb']p_s = set(python_l)l_s = set(linux_l)print('交叉补集', p_s ^ l_s) # 输出:{'zjw', 'sb'} 集合是编程中非常有用的数据结构。它可以帮助我们去重、进行关系运算,并且支持多种集合操作。熟练掌握集合的使用方法,可以让我们的代码更加高效和简洁。如果你对集合还有其他疑问,欢迎在评论区留言!
转载地址:http://ijlfk.baihongyu.com/