zoukankan      html  css  js  c++  java
  • Python set 集合

    简介

      python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联 合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.

    创建集合

    1 >>> S1 = set('spiritman')
    2 >>> print S1
    3 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])

    集合常用操作及实例展示

      可以使用dir(set)查看集合支持的操作方法

    add

     1 功能:增加一个元素到集合。当集合存在该元素时,该语句不生效
     2      Add an element to a set.This has no effect if the element is already present.
     3 语法:S.add(object)
     4 实例展示:
     5 >>> S1 = set('spirit')
     6 >>> print S1
     7 set(['i', 'p', 's', 'r', 't'])
     8 >>> S1.add('a')
     9 >>> print S1
    10 set(['a', 'i', 'p', 's', 'r', 't'])
    11 >>> S1.add('a')
    12 >>> print S1   
    13 set(['a', 'i', 'p', 's', 'r', 't'])  

    clear

     1 功能:清空集合
     2      Remove all elements from this set.
     3 语法:S.clear()
     4 实例展示:
     5 >>>S1 = set('spirit')
     6 >>> print S1
     7 set(['i', 'p', 's', 'r', 't'])
     8 >>> S1.clear()
     9 >>> print S1      
    10 set([])

    copy

     1 功能:浅复制集合,返回一个新的集合。
     2      Return a shallow copy of a set.
     3 语法:S.copy()
     4 实例展示:
     5 >>> S1 = set('spirit')
     6 >>> print S1
     7 set(['i', 'p', 's', 'r', 't'])
     8 >>> S2 = S1.copy()
     9 >>> print S2
    10 set(['i', 'p', 's', 'r', 't'])
    11 >>> id(S2)
    12 140239642434120
    13 >>> print S1
    14 set(['i', 'p', 's', 'r', 't'])
    15 >>> id(S1)
    16 140239644667136

    difference

     1 功能:找出两个或多个集合中的不同元素,结果返回一个新的集合
     2      Return the difference of two or more sets as a new set.(all elements that are in this set but not the others.)
     3 语法:S.differencce(set1,set2.....)
     4 实例展示:
     5 >>> S1 = set('spirita') 
     6 >>> print S1           
     7 set(['a', 'i', 'p', 's', 'r', 't'])
     8 >>> S2 = set('spiri')   
     9 >>> print S2           
    10 set(['i', 'p', 's', 'r'])
    11 >>> S3 = set('liush') 
    12 >>> print S3
    13 set(['i', 'h', 's', 'u', 'l'])
    14 ##################################################
    15 #找出S1和S2中的不同元素,结果返回一个新的集合
    16 >>> S1.difference(S2)
    17 set(['a', 't'])
    18 ##################################################
    19 #找出S1和S3中的不同元素,结果返回一个新的集合
    20 >>> S1.difference(S3)
    21 set(['a', 'p', 'r', 't'])
    22 ##################################################
    23 #找出S1、S2和S3中的不同元素,结果返回一个新的集合
    24 >>> S1.difference(S2,S3)
    25 set(['a', 't'])

    difference_update

     1 功能:删除集合S中所有跟S1中相同的元素。无相同元素时,各个集合不会发生改变。
     2      Remove all elements of another set from this set.
     3 语法:S.difference_update(S1)
     4 实例展示:
     5 >>> S1 = set('spirit') 
     6 >>> print S1
     7 set(['i', 'p', 's', 'r', 't'])     
     8 >>> S2 = set('abcde')       
     9 >>> print S2
    10 set(['a', 'c', 'b', 'e', 'd'])
    11 >>> S3 = set('spiritman')  
    12 >>> print S3
    13 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])
    14 >>> S1.difference_update(S2)
    15 >>> print S1
    16 set(['i', 'p', 's', 'r', 't'])
    17 >>> print S2
    18 set(['a', 'c', 'b', 'e', 'd'])
    19 >>> S1.difference_update(S3)
    20 >>> print S1                
    21 set([])
    22 >>> print S3
    23 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])
    24 >>> S2.difference_update(S3)
    25 >>> print S2
    26 set(['c', 'b', 'e', 'd'])
    27 >>> print S3                
    28 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])

    discard

     1 功能:从集合中删除一个元素。一次只能删除一个。
     2     Remove an element from a set if it is a member.
     3 语法:S.discard(object)
     4 实例展示:
     5 S3 = set('spiritman')
     6 >>> print S3
     7 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])
     8 >>> S3.discard('a')
     9 >>> print S3       
    10 set(['i', 'm', 'n', 'p', 's', 'r', 't'])
    11 ####################################################
    12 #删除多个元素时报错
    13  >>>S3.discard('i','m')
    14 Traceback (most recent call last):
    15   File "<stdin>", line 1, in <module>
    16 TypeError: discard() takes exactly one argument (2 given)

    intersection

     1 功能:求两个或多个集合的交集,交集返回一个新的集合。
     2     Return the intersection of two or more sets as a new set.(elements that are common to all of the sets.)
     3 语法:S.intersection(set1,set2...)
     4 实例展示:
     5 >>> S1 = set('spirit')      
     6 >>> print S1
     7 set(['i', 'p', 's', 'r', 't'])
     8 >>> S2 = set('spiman') 
     9 >>> print S2
    10 set(['a', 'i', 'm', 'n', 'p', 's'])
    11 >>> S3 = set('abcis')  
    12 >>> print S3
    13 set(['a', 'i', 'c', 'b', 's'])
    14 ##################################################
    15 #求S1和S2的交集
    16 >>> S1.intersection(S2)
    17 set(['i', 'p', 's'])
    18 ##################################################
    19 #求S1和S3的交集
    20 >>> S1.intersection(S3)
    21 set(['i', 's'])
    22 ##################################################
    23 #求S1、S2和S3的交集
    24 >>> S1.intersection(S2,S3)
    25 set(['i', 's'])

    intersection_update

     1 功能: 以一个集合和另一个集合的交集更新该集合。
     2      Update a set with the intersection of itself and another.
     3 语法:S.intersection_update(set1)
     4 实例展示:
     5 >>> S1 = set('spirit')
     6 >>> print S1
     7 set(['i', 'p', 's', 'r', 't'])   
     8 >>> S2 = set('spiman')
     9 >>> print S2
    10 set(['a', 'i', 'm', 'n', 'p', 's'])
    11 >>> S3 = set('abcis')
    12 >>> print S3
    13 set(['a', 'i', 'c', 'b', 's'])
    14 ##################################################
    15 #以S1和S3的交集更新S1
    16 >>> S1.intersection_update(S3) 
    17 >>> print S1
    18 set(['i', 's'])
    19 ##################################################
    20 #以S2和S3的交集更新S2
    21 >>> S2.intersection_update(S3)
    22 >>> print S2
    23 set(['a', 'i', 's'])

    isdisjoint

     1 功能:判断两个集合是否有集合。若没有则返回True;反之False。
     2      Return True if two sets have a null intersection.
     3 语法:S.isdisjoint(set1)
     4 实例展示:
     5 >>> S1 = set('spirit')
     6 >>> print S1
     7 set(['i', 'p', 's', 'r', 't'])   
     8 >>> S2 = set('spiman')
     9 >>> print S2
    10 set(['a', 'i', 'm', 'n', 'p', 's'])
    11 >>> S3 = set('abcdef')
    12 >>> print S3
    13 set(['a', 'c', 'b', 'e', 'd', 'f'])
    14 ####################################################
    15 >>> S1.isdisjoint(S2)
    16 False
    17 >>> S1.isdisjoint(S3)
    18 True
    19 >>> S2.isdisjoint(S3)
    20 False

    issubset

     1 功能:判断集合是否是另一个集合的子集合。是则返回True;反之False.
     2     Report whether another set contains this set.
     3 语法:S.issubset(set1)
     4 实例展示:
     5 >>> S1 = set('spirit')   
     6 >>> print S1
     7 set(['i', 'p', 's', 'r', 't'])
     8 >>> S2 = set('spiritman')
     9 >>> print S2
    10 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])
    11 >>> S3 = set('abcis')
    12 >>> print S3
    13 set(['a', 'i', 'c', 'b', 's'])
    14 ##################################################
    15 >>> S1.issubset(S2)
    16 True
    17 >>> S3.issubset(S2)
    18 False
    19 >>> S1.issubset(S3)
    20 False

    issuperset

     1 功能:判断集合是否包含另一个集合。
     2     Report whether this set contains another set
     3 语法:issuperset(set1)
     4 实例展示:
     5 >>> S1 = set('spiritman')
     6 >>> print S1
     7 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])
     8 >>> S2 = set('spirit')   
     9 >>> print S2
    10 set(['i', 'p', 's', 'r', 't'])
    11 >>> S1.issuperset(S2)
    12 True

    pop

     1 功能:删除并返回任意一个元素。
     2    Remove and return an arbitrary set element.Raises KeyError if the set is empty.
     3 语法:S.pop()
     4 实例展示:
     5 >>> S1 = set('spiritman')
     6 >>> print S1
     7 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])
     8 
     9 >>> S1.pop()   
    10 'a'
    11 >>> S1.pop()
    12 'i'
    13 >>> S1.pop()
    14 'm'
    15 >>> print S1
    16 set(['n', 'p', 's', 'r', 't'])

    remove

     1 功能:删除集合中一个指定的元素。
     2     Remove an element from a set; it must be a member.If the element is not a member, raise a KeyError
     3 语法:S.remove(object)
     4 实例展示:
     5 >>> S1 = set('spiritman')
     6 >>> print S1
     7 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])
     8 >>> S1.remove('n')
     9 >>> print S1
    10 set(['a', 'i', 'm', 'p', 's', 'r', 't'])
    11 >>> S1.remove('b')
    12 Traceback (most recent call last):
    13   File "<stdin>", line 1, in <module>
    14 KeyError: 'b'

    symmetric_difference

     1 功能:取两个集合的差集,返回一个新集合。
     2 Return the symmetric difference of two sets as a new set.(all elements that are in exactly one of the sets.)
     3 语法:S.symmetric_difference(set1)
     4 实例展示:
     5 >>> S1 = set('spiritman')      
     6 >>> print S1
     7 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])
     8 >>> S2 = set('spirit')         
     9 >>> print S2
    10 set(['i', 'p', 's', 'r', 't'])
    11 >>> S3 = set('bcde')           
    12 >>> print S3
    13 set(['c', 'b', 'e', 'd'])
    14 ##################################################
    15 #返回S1和S2差集
    16 >>> S1.symmetric_difference(S2)
    17 set(['a', 'm', 'n'])
    18 ##################################################
    19 #返回S1和S3差集
    20 >>> S1.symmetric_difference(S3)
    21 set(['a', 'c', 'b', 'e', 'd', 'i', 'm', 'n', 'p', 's', 'r', 't'])
    22 ##################################################
    23 #返回S2和S3差集
    24 >>> S2.symmetric_difference(S3)
    25 set(['c', 'b', 'e', 'd', 'i', 'p', 's', 'r', 't'])

    symmetric_difference_update

     1 功能:取集合和另一个集合的差集,更新该集合。
     2 Update a set with the symmetric difference of itself and another.
     3 语法:symmetric_difference_update(set1)
     4 实例展示:
     5 >>> S1 = set('spiritman')      
     6 >>> print S1
     7 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])
     8 >>> S2 = set('spirit')         
     9 >>> print S2
    10 set(['i', 'p', 's', 'r', 't'])
    11 >>> S3 = set('bcde')           
    12 >>> print S3
    13 set(['c', 'b', 'e', 'd'])
    14 ####################################################
    15 >>> S1.symmetric_difference_update(S2)
    16 >>> print S1
    17 set(['a', 'm', 'n'])
    18 
    19 >>> S2.symmetric_difference_update(S3)
    20 >>> print S2
    21 set(['c', 'b', 'e', 'd', 'i', 'p', 's', 'r', 't'])

    union

     1 功能:取多个集合的并集,返回一个新的集合。
       Return the union of sets as a new set.(all elements that are in either set.)
    2 语法:S.union(set1,set2....) 3 实例展示: 4 >>> S1 = set('spiritman') 5 >>> print S1 6 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't']) 7 >>> S2 = set('spirit') 8 >>> print S2 9 set(['i', 'p', 's', 'r', 't']) 10 >>> S3 = set('bcde') 11 >>> print S3 12 set(['c', 'b', 'e', 'd']) 13 ################################################## 14 #返回S1和S2的并集 15 >>> S1.union(S2) 16 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't']) 17 ################################################## 18 #返回S1和S3的并集 19 >>> S1.union(S3) 20 set(['a', 'c', 'b', 'e', 'd', 'i', 'm', 'n', 'p', 's', 'r', 't']) 21 ################################################# 22 #返回S1、S2和S3的并集 23 >>> S1.union(S2,S3) 24 set(['a', 'c', 'b', 'e', 'd', 'i', 'm', 'n', 'p', 's', 'r', 't'])

    update

     1 功能:取一个集合和另一个集合的并集,更新该集合。
     2     Update a set with the union of itself and others.
     3 语法:S.update(set1)
     4 实例展示:
     5 >>> S1 = set('spiritman')
     6 >>> print S1
     7 set(['a', 'i', 'm', 'n', 'p', 's', 'r', 't'])
     8 >>> S3 = set('bcde') 
     9 >>> print S3
    10 set(['c', 'b', 'e', 'd'])
    11 >>> S1.update(S3)
    12 >>> print S1
    13 set(['a', 'c', 'b', 'e', 'd', 'i', 'm', 'n', 'p', 's', 'r', 't'])
    http://www.cnblogs.com/spiritman/
  • 相关阅读:
    C++学习9 this指针详解
    福建省第八届 Triangles
    UVA 11584 Partitioning by Palindromes
    POJ 2752 Seek the Name, Seek the Fame
    UVA 11437 Triangle Fun
    UVA 11488 Hyper Prefix Sets (字典树)
    HDU 2988 Dark roads(kruskal模板题)
    HDU 1385 Minimum Transport Cost
    HDU 2112 HDU Today
    HDU 1548 A strange lift(最短路&&bfs)
  • 原文地址:https://www.cnblogs.com/spiritman/p/5157969.html
Copyright © 2011-2022 走看看