python3【基础】-集合
集合( set):把不同的元素组成一起形成集合,是python基本的数据类型。
集合元素(set elements):组成集合的成员(不可重复)
class set(object) | set() -> new empty set object | set(iterable) -> new set object | | Build an unordered collection of unique elements. | | Methods defined here: | | __and__(self, value, /) | Return self&value. | | __contains__(...) | x.__contains__(y) <==> y in x. | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __gt__(self, value, /) | Return self>value. | | __iand__(self, value, /) | Return self&=value. | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | __ior__(self, value, /) | Return self|=value. | | __isub__(self, value, /) | Return self-=value. | | __iter__(self, /) | Implement iter(self). | | __ixor__(self, value, /) | Return self^=value. | | __le__(self, value, /) | Return self<=value. | | __len__(self, /) | Return len(self). | | __lt__(self, value, /) | Return self<value. | | __ne__(self, value, /) | Return self!=value. | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | __or__(self, value, /) | Return self|value. | | __rand__(self, value, /) | Return value&self. | | __reduce__(...) | Return state information for pickling. | | __repr__(self, /) | Return repr(self). | | __ror__(self, value, /) | Return value|self. | | __rsub__(self, value, /) | Return value-self. | | __rxor__(self, value, /) | Return value^self. | | __sizeof__(...) | S.__sizeof__() -> size of S in memory, in bytes | | __sub__(self, value, /) | Return self-value. | | __xor__(self, value, /) | Return self^value. | | add(...) | Add an element to a set. | | This has no effect if the element is already present. | | clear(...) | Remove all elements from this set. | | copy(...) | Return a shallow copy of a set. | | difference(...) | Return the difference of two or more sets as a new set. | | (i.e. all elements that are in this set but not the others.) | | difference_update(...) | Remove all elements of another set from this set. | | discard(...) | Remove an element from a set if it is a member. | | If the element is not a member, do nothing. | | intersection(...) | Return the intersection of two sets as a new set. | | (i.e. all elements that are in both sets.) | | intersection_update(...) | Update a set with the intersection of itself and another. | | isdisjoint(...) | Return True if two sets have a null intersection. | | issubset(...) | Report whether another set contains this set. | | issuperset(...) | Report whether this set contains another set. | | pop(...) | Remove and return an arbitrary set element. | Raises KeyError if the set is empty. | | remove(...) | Remove an element from a set; it must be a member. | | If the element is not a member, raise a KeyError. | | symmetric_difference(...) | Return the symmetric difference of two sets as a new set. | | (i.e. all elements that are in exactly one of the sets.) | | symmetric_difference_update(...) | Update a set with the symmetric difference of itself and another. | | union(...) | Return the union of sets as a new set. | | (i.e. all elements that are in either set.) | | update(...) | Update a set with the union of itself and others. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __hash__ = None
集合分类:可变集合、不可变集合
可变集合(set):可添加和删除元素,非可哈希的,不能用作字典的键,也不能做其它集合的元素。
不可变集合(fromzenset):与上面的恰恰相反
一、集合的相关操作
1. 创建集合
由于集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()创建。创建集合仅有上述一种方法。
>>> s1 = set([1,2,2,3,4]) >>> s2 = frozeset([1,2,2,3,4]) >>> s2 = frozenset([1,2,2,3,4]) >>> s1 {1, 2, 3, 4} >>> s2 frozenset({1, 2, 3, 4})
2. 访问集合
由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。
3. 更新集合
更新集合主要有下述三种方法
-
s.add()
-
s.update() # 更新多个元素
-
s.remove()
使用del关键字删除整个集合
4. 集合类型操作符
- in ,not in
- 集合等价不等价(==, !=)
- 子集和超集
- 联合(取并集)
- 联合(union)操作与集合的or操作其实等价的,联合符号有个等价的方法,union()。
-
>>> a = set([1,2,3]) >>> b = set([4,5,6]) >>> a | b {1, 2, 3, 4, 5, 6}
- 交集
- 等价于intersection()方法
-
>>> a = set([1,2,3,4]) >>> b = set([3,4,5,6]) >>> a & b {3, 4}
差集
- 等价于difference方法
-
>>> a {1, 2, 3, 4} >>> b {3, 4, 5, 6} >>> a - b {1, 2}
>>> a.difference(b)
{1, 2}对称差集
- 反向交集,对称差分是集合的XOR(‘异或’),取得的元素属于s1,s2但不同时属于s1和s2.其等价方法symmetric_difference()
-
>>> a ^ b {1, 2, 5, 6} >>> a.symmetric_difference(b) {1, 2, 5, 6}