Appearance
集合和列表很相似,类似Java中的Set集合,这张表从五个角度总结了集合和列表的区别。
功能 | 列表 | 集合 |
---|---|---|
顺序 | 有序 | 无序 |
内容 | 可重复 | 不可重复 |
功能 | 用于数据的使用 | 用于数据的交集、并集、差集的获取 |
索引 | 有索引 | 无索引 |
符号 | [] [1,2,3] | {} |
集合的常用操作锦集
方法名称 | 使用效果 |
---|---|
add | 添加元素 |
update | 在当前集合加入一个新的集合(也可以是列表,元组,字符串),如果原集合已存在新集合内的元素,则无视。 |
remove | 删除元素,如果集合中不存在此元素,则报错。 |
clear | 清空集合 |
del | 删除集合,删除后无法引用 |
difference | 获取两个集合的差集,即返回包含第一个集合但不在第二个集合内的元素 |
intersection | 交集,即两个集合都存在的元素 |
union | 并集,两个集合去重后的所有元素 |
isdisjoint | 判断两个集合是否不包含相同元素,如果没有返回True,如果有返回False |
1.集合的创建
通过set函数来创建结合,不能使用{}
来创建空集合.
python
if __name__ == '__main__':
a_set = set()
b_set = set([1, 2, 3])
c_set = {1, 2, 3}
d_set = {} # 错误定义
print(type(c_set)) # <class 'set'>,c是正确定义
print(type(d_set)) # <class 'dict'>,空定义会识别成字典类型
2.集合的增删改
- add:添加元素,如果集合中已经存在则不添加,注意集合是无序的,所有添加后展示的顺序可能是不同的。
- update:在当前集合加入一个新的集合(也可以是列表,元组,字符串),如果原集合已存在新集合内的元素,则无视。
python
if __name__ == '__main__':
test_set = {1, 2, 3}
test_set.add(6) # 添加元素
test_set.add(6) # 集合中已存在的元素不会添加
print(test_set) # {1, 2, 3, 6}
list1 = [2, 3, 4]
test_set.update(list1) # 添加新集合
print(test_set) # {1, 2, 3, 4, 6}
test_set.remove(6)
print(test_set) # {1, 2, 3, 4}
test_set.clear()
print(test_set) # set()
del test_set
print(test_set) # 报错,因为del将直接抹除其内存空间
3.集合的差集、交集和并集
python
if __name__ == '__main__':
set_1 = {1, 2, 3}
set_2 = {3, 4, 5, 6}
print(set_1.difference(set_2)) # 差集,{1, 2}
print(set_1.intersection(set_2)) # 交集,{3}
print(set_1.union(set_2)) # 并集,{1, 2, 3, 4, 5, 6}
4.判断两个集合是否包含相同元素
isdisjoint:判断两个集合是否不包含相同元素,如果没有返回True,如果有返回False
python
if __name__ == '__main__':
set_1 = {1, 2, 3}
set_2 = {3, 4, 5, 6}
set_3 = {4,5,6}
print(set_1.isdisjoint(set_2)) # False
print(set_1.isdisjoint(set_3)) # True