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}

 

posted @ 2018-01-05 16:06  刘十一  阅读(177)  评论(0编辑  收藏  举报