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