zoukankan      html  css  js  c++  java
  • python(3)-集合

    集合就是把不同的元素组织在一起,但在集合中不允许有重复的元素。

    >>> a = set()             #创建集合
    >>> type(a) 
    <class 'set'>

    集合中不允许出现重复的元素

    >>> a.add('jack')         #向集合中添加元素
    >>> print(a)
    {'jack'}
    >>> a.add("jack")       #再次向集合中添加同样的元素
    >>> print(a)
    {'jack'}                         #同样的元素只能出现一次

    集合的访问:

    因为集合是无序的,所以不能对它进行切片,只能遍历,in 或 not in 等方法

    >>> s = set("fjihutiejhgir")
    >>> print(s)
    {'u', 'h', 'i', 'e', 'g', 'j', 't', 'r', 'f'}
    >>> a in s
    False
    >>> a not in s
    True
    >>> for i in s:
    ...   print(i)
    ...
    u
    h
    i
    e
    g
    j
    t
    r
    f
    >>>

    向集合添加元素,删除元素

    >>> s = set("a")
    >>> s.update("b")           #添加元素
    >>> print(s)
    {'b', 'a'}
    >>> s.add("c")               #添加元素
    >>> print(s)
    {'b', 'a', 'c'}
    >>> s.remove("a")         #删除元素
    >>> print(s)
    {'b', 'c'}
    >>>

    清空集合元素及删除集合

    >>> s.clear()
    >>> print(s)
    set()
    >>> del s                
    >>> print(s)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 's' is not defined

    下面重温一下并集,交集,差集的概念

    image

    差集,difference()  返回一个新集合

    >>> s1 = set("abcdefg")
    >>> s2 = set("efghijk")
    >>> s1.difference(s2)            #s1与s2的差集
    {'b', 'a', 'd', 'c'}
    >>> s2.difference(s1)            #s2与s1的差集
    {'j', 'h', 'i', 'k'}

    交集,&  或 intersection() 返回一个新集合

    >>> s1&s2
    {'g', 'f', 'e'}
    >>> s3 = s1&s2
    >>> print(s3)
    {'g', 'f', 'e'}
    >>> s4 = s1.intersection(s2)
    >>> print(s4)
    {'g', 'f', 'e'}
    >>>

    并集, | 或 union()  返回一个新集合

    >>> s3 = s1|s2
    >>> print(s3)
    {'h', 'a', 'd', 'e', 'i', 'k', 'g', 'b', 'j', 'f', 'c'}
    >>> s4 = s1.union(s2)
    >>> print(s4)
    {'h', 'a', 'd', 'e', 'i', 'k', 'g', 'b', 'j', 'f', 'c'}

    集合是不能相加,但可以相减

    >>> s1-s2
    {'b', 'a', 'd', 'c'}
    >>> s3 = s1+s2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unsupported operand type(s) for +: 'set' and 'set'

    集合之间的and , or

    >>> s1 = set("abc")
    >>> s2 = set("cde")
    >>> s1 and s2           #取s2
    {'c', 'd', 'e'}
    >>> s1 or s2             #取s1
    {'b', 'a', 'c'}

    difference_update()    传什么进来就删除什么

    >>> s1 = set("abcdefg")
    >>> s1.difference_update("a")
    >>> print(s1)
    {'d', 'e', 'g', 'b', 'f', 'c'}

    intersection_update()    还是看例子吧,好理解

    >>> s1 = set("abcdefg")
    >>> s2 = set("efghij")
    >>> s1.intersection_update(s2)          #在s1中只保留s1和s2中都有的元素
    >>> print(s1)
    {'g', 'f', 'e'}

    pop()    在集合中随机删除一个元素并返回该元素,此方法不能带参数

    >>> s1.pop("a")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: pop() takes no arguments (1 given)
    >>> s1.pop()
    'a'
    >>> s1.pop()
    'd'

    s1.symmetric_difference(s2)    #取出两边的差集

    >>> s1 = set("abcdefg")
    >>> s2 = set("efghij")
    >>> s1.symmetric_difference(s2)
    {'j', 'h', 'b', 'a', 'd', 'c', 'i'}

    最觉的应用,便是去除重复的元素

    >>> li = [1,1,2,2,3,3,4,4,5,5,6,6]
    >>> print(set(li))
    {1, 2, 3, 4, 5, 6}
  • 相关阅读:
    mysql 下 计算 两点 经纬度 之间的距离
    富爸爸财务自由之路
    Ubuntu16.04忘记MySQL5.7的root用户密码之解决方案
    Windowns下code: command not found
    Linux下CRMEB环境搭建
    PHP无法使用curl_init()函数
    请在mysql配置文件修sql-mode或sql_mode为NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    apache不能解析php之解决办法
    windows上hexo: command not found
    SyntaxError: Non-ASCII character 'æ' in file csdn.py on line 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
  • 原文地址:https://www.cnblogs.com/huangxm/p/5215418.html
Copyright © 2011-2022 走看看