python3 集合

Python 中setdict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

注意,key为不可变类型,即可哈希的值。

集合的内置方法

  • set.add(elmnt)用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。

  • set.update(set)用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

  • set.remove(item) 用于移除集合中的指定元素。如果元素不存在,则会发生错误。

  • set.discard(value) 用于移除指定的集合元素。remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。

  • set.pop() 用于随机移除一个元素。

由于 set 是无序和无重复元素的集合,所以两个或多个 set 可以做数学意义上的集合操作。

  • set.intersection(set1, set2) 返回两个集合的交集。

  • set1 & set2 返回两个集合的交集。

  • set.intersection_update(set1, set2) 交集,在原始的集合上移除不重叠的元素。

  • set.union(set1, set2) 返回两个集合的并集。

  • set1 | set2 返回两个集合的并集。

  • set.difference(set) 返回集合的差集。

  • set1 - set2 返回集合的差集。

  • set.difference_update(set) 集合的差集,直接在原来的集合中移除元素,没有返回值。

  • set.symmetric_difference(set)返回集合的异或。

  • set1 ^ set2 返回集合的异或。

  • set.symmetric_difference_update(set)移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

  • set.issubset(set)判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False。

  • set1 <= set2 判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False。

  • set.issuperset(set)用于判断集合是不是包含其他集合,如果是则返回 True,否则返回 False。

  • set1 >= set2 判断集合是不是包含其他集合,如果是则返回 True,否则返回 False。

  • set.isdisjoint(set) 用于判断两个集合是不是不相交,如果是返回 True,否则返回 False。

不可变集合

Python 提供了不能改变元素的集合的实现版本,即不能增加或删除元素,类型名叫frozenset。需要注意的是frozenset仍然可以进行集合操作,只是不能用带有update的方法。

  • frozenset([iterable]) 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。