11. 集合(Set)
集合是一个无序不重复元素的序列
11.1 创建集合
- 可以使用大括号 {} 或者 set() 函数创建集合
- 创建一个空集合必须用 set() 而不是 {},因为 {} 是用来创建一个空字典
- set(value) 方式创建集合,value 可以是字符串、列表、元组、字典等序列类型
- 创建、添加、修改等操作,集合会自动去重
{1, 2, 1, 3} # {} {1, 2, 3}
set('12345') # 字符串 {'3', '5', '4', '2', '1'}
set([1, 'a', 23.4]) # 列表 {1, 'a', 23.4}
set((1, 'a', 23.4)) # 元组 {1, 'a', 23.4}
set({1:1, 'b': 9}) # 字典 {1, 'b'}
11.2 添加元素
将元素 val 添加到集合 set 中,如果元素已存在,则不进行任何操作:
set.add(val)
也可以用 update 方法批量添加元素,参数可以是列表,元组,字典等:
set.update(list1, list2,...)
11.3 移除元素
如果存在元素 val 则移除,不存在就报错:
set.remove(val)
如果存在元素 val 则移除,不存在也不会报错:
set.discard(val)
随机移除一个元素:
set.pop()
11.4 元素个数
与其他序列一样,可以用 len(set) 获取集合的元素个数。
11.5 清空集合
set.clear()
set = set()
11.6 判断元素是否存在
val in set
11.7 其他方法
方法 | 描述 |
---|---|
set.copy() | 复制集合 |
set.difference(set2) | 求差集,在 set 中却不在 set2 中 |
set.intersection(set2) | 求交集,同时存在于 set 和 set2 中 |
set.union(set2) | 求并集,所有 set 和 set2 的元素 |
set.symmetric_difference(set2) | 求对称差集,不同时出现在两个集合中的元素 |
set.isdisjoint(set2) | 如果两个集合没有相同的元素,返回 True |
set.issubset(set2) | 如果 set 是 set2 的一个子集,返回 True |
set.issuperset(set2) | 如果 set 是 set2 的一个超集,返回 True |
11.8 集合计算
a = set('abracadabra')
b = set('alacazam')
print(a) # a 中唯一的字母
# {'a', 'r', 'b', 'c', 'd'}
print(a - b) # 在 a 中的字母,但不在 b 中
# {'r', 'd', 'b'}
print(a | b) # 在 a 或 b 中的字母
# {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
print(a & b) # 在 a 和 b 中都有的字母
# {'a', 'c'}
print(a ^ b) # 在 a 或 b 中的字母,但不同时在 a 和 b 中
# {'r', 'd', 'b', 'm', 'z', 'l'}
11.9 集合推导式
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)
# {'d', 'r'}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。