zoukankan      html  css  js  c++  java
  • python3.x 基础三:set集合

    集合,set(),记住:

    1个特点:去重,把列表变成集合,达到自动去重操作,无序

    5个关系:测试两个列表的交差并子反向差集

    方法:

    •  |  add(...) 常用,已存在元素去重不生效
    •  |      Add an element to a set.
    •  |     This has no effect if the element is already present.
      >>> list1=[3,2,1,1,2,3,4,5]
      >>> set(list1)
      {1, 2, 3, 4, 5}
      >>> list2=[3,4,5,6,7,8]
      >>> set(list1).add(2)
      >>> set(list1).add(6)
      >>> print(set(list1).add(2))
      None
      >>> print(set(list1).add(6))
      None
      >>> set1=set(list1)
      >>> set2=set(list2)
      >>> set1,set2
      ({1, 2, 3, 4, 5}, {3, 4, 5, 6, 7, 8})
      >>> set1.add(3)
      >>> print(set1.add(3)
      ... )
      None
      >>> print(set1.add(7))
      None
      >>> set1.add('aaa')
      >>> set1
      {1, 2, 3, 4, 5, 7, 'aaa'}
      >>> id(set1)
      140138768484616
      >>> set1.add('aaaa')
      >>> id(set1)
      140138768484616
      >>> set1
      {1, 2, 3, 4, 5, 7, 'aaa', 'aaaa'}
      >>> set1.add('7')
      >>> set1
      {1, 2, 3, 4, 5, 7, 'aaa', 'aaaa', '7'}
      >>> set1.add(7)
      >>> set1
      {1, 2, 3, 4, 5, 7, 'aaa', 'aaaa', '7'}
      View Code
    •  如果是字符串,则拆分成单个字符集合
    • >>> set('abc')
      {'a', 'c', 'b'}
    •  |  clear(...) 清空一个集合
    •  |      Remove all elements from this set.
      >>> set1.clear()
      >>> set1
      set()
    •  |  copy(...) 影子复制,指向同一个内存地址
    •  |      Return a shallow copy of a set. |  
      >>> list1
      [3, 2, 1, 1, 2, 3, 4, 5]
      >>> list2
      [3, 4, 5, 6, 7, 8]
      >>> set1=set(list1) >>> id(set1) 140138768485512>>> set3=set1.copy() >>> id(set3) 140138695576712
    •  |  difference(...) 差集,格式set1.difference(set2),求in list1 not in list2的集合
    •  |      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.)   
      >>> set1
      {1, 2, 3, 4, 5}
      >>> set2
      {3, 4, 5, 6, 7, 8}
      >>> set1.difference(set2)
      {1, 2}
    •  |  difference_update(...) 删除在本集合同时也在其他集合的元素,差集
    •  |      Remove all elements of another set from this set. |
      >>> set1=set(list1)
      >>> set2=set(list2)
      >>> set1,set2
      ({1, 2, 3, 4, 5}, {3, 4, 5, 6, 7, 8})
      >>> set1=set(list1) >>> set2=set(list2) >>> set2.difference_update(set1) >>> set2 {6, 7, 8}
       
    •  |  discard(...) 删除一个在本集合中的元素
    •  |      Remove an element from a set if it is a member.
    •  |      
    •  |      If the element is not a member, do nothing. |  
      >>> set3=set([1,2,3,'a','b','c'])
      >>> set3.discard(1)
      >>> set3
      {2, 3, 'c', 'b', 'a'}
      >>> set3.discard('a')
      >>> set3
      {2, 3, 'c', 'b'}
      >>> set3.discard('dd')
      >>> set3
      {2, 3, 'c', 'b'}
    •  |  intersection(...)并集,同时在两个集合中的元素
    •  |      Return the intersection of two sets as a new set.
    •  |      
    •  |      (i.e. all elements that are in both sets.) |  
      >>> set1
      {1, 2, 3, 4, 5}
      >>> set2
      {3, 4, 5, 6, 7, 8}
      >>> set1.intersection(set2)
      {3, 4, 5}
      >>> set2.intersection(set1)
      {3, 4, 5}
    •  |  intersection_update(...) 交集
    •  |      Update a set with the intersection of itself and another. |  
      >>> set1,set2
      ({1, 2, 3, 4, 5}, {3, 4, 5, 6, 7, 8})
      >>> set1.intersection_update(set2)
      >>> set1
      {3, 4, 5}
    •  |  isdisjoint(...) 返回布尔值,判断两个集合是否没有并集
    •  |      Return True if two sets have a null intersection.
    •  |  
      >>> set1,set2,set3,set4
      ({3, 4, 5}, {3, 4, 5, 6, 7, 8}, {2, 3, 'c', 'b'}, {'y', 'x', 'z'})
      >>> set1.isdisjoint(set2)
      False
      >>> set1.isdisjoint(set4)
      True
    •  |  issubset(...) 返回布尔值,判断前一个集合是否是后一个集合的子集
    •  |      Report whether another set contains this set. |  
      >>> set1
      {3, 4, 5}
      >>> set5
      {3, 4}
      >>> set5.issubset(set1)
      True
    •  |  issuperset(...) 返回布尔值,判断前一个集合是否是后一个集合的父集
    •  |      Report whether this set contains another set. |  
      >>> set1
      {3, 4, 5}
      >>> set5
      {3, 4}
      >>> set1.issuperset(set5)
      True
    •  |  pop(...) 随机删除一个集合元素,返回被删除元素,空集合删除则报错
    •  |      Remove and return an arbitrary set element.
    •  |      Raises KeyError if the set is empty. |  
      >>> set1
      {3, 4, 5}
      >>> set1.pop()
      3
      >>> set1
      {4, 5}
      >>> set1.pop()
      4
      >>> set1.pop()
      5
      >>> set1.pop()
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      KeyError: 'pop from an empty set'
    •  |  remove(...) 删除指定在集合中的元素
    •  |      Remove an element from a set; it must be a member. |      
      >>> set1=set(list1)
      >>> set1
      {1, 2, 3, 4, 5}
      >>> set1.remove(1)
      >>> set1
      {2, 3, 4, 5}
      >>> set1.remove('a')
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      KeyError: 'a'
    •  |  symmetric_difference(...) 对称差集,集合A与集合B不相交的部分,交集的反集
    •  |     Return the symmetric difference of two sets as a new set.
    •  |     (i.e. all elements that are in exactly one of the sets.)     
      >>> set1
      {1, 2, 3, 4, 5}
      >>> set6={4,5,6,7,8}
      >>> set1.symmetric_difference(set6)
      {1, 2, 3, 6, 7, 8}
      >>> set6.symmetric_difference(set1)
      {1, 2, 3, 6, 7, 8}
      >>> set1,set7
      ({1, 2, 3, 4, 5}, {'a', 'c', 'b'})
      >>> set1.symmetric_difference(set7)
      {'c', 2, 3, 1, 4, 5, 'b', 'a'}
    •  |  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.)
      >>> set1
      {1, 2, 3, 4, 5}
      >>> set2
      {3, 4, 5, 6, 7, 8}
      >>> set1.union(set2)
      {1, 2, 3, 4, 5, 6, 7, 8}
    •  |  update(...) 用交集更新到set1的集合
    •  |      Update a set with the union of itself and others. |  
      >>> set1
      {1, 2, 3, 4, 5}
      >>> set2
      {3, 4, 5, 6, 7, 8}
      >>> set1.update(set2)
      >>> set1
      {1, 2, 3, 4, 5, 6, 7, 8}
      >>> 






  • 相关阅读:
    BAT批处理(二)
    C语言的字符测试函数
    C语言文件操作函数
    Linux中断处理体系结构分析
    Linux内存管理
    Linux内核的同步机制
    系统调用原理
    LeetCode 10. 正则表达式匹配(Regular Expression Matching)
    LeetCode 44. 通配符匹配(Wildcard Matching)
    海量积分数据实时排名算法
  • 原文地址:https://www.cnblogs.com/jenvid/p/7821463.html
Copyright © 2011-2022 走看看