python3 集合
Python 中set
与dict
类似,也是一组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])
返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。