• python 集合 set


    集合 set:可变集合与不可变集合

    可变集合:可以向集合中添加删除元素,非可哈希的,不能用作字典的键,也不能做其他集合的元素。

    把不同的元素组成一起形成集合,集合不记录元素的位置或者插入点,也就是不能用index索引来获取元素。

    集合元素:组成集合的成员不可以有重复,有重复的会被筛选过滤。

    语法:set()函数

    set('list')  参数需要时一个序列

    例如:

    >>> s = set('alex li')
    >>> s
    set(['a', ' ', 'e', 'i', 'l', 'x'])  在这里会发现两个l字符,输出时只出现了一次,其中一个重复的被set给筛选过滤掉了。

    >> a=[1,2,3,4,5,6]
    >>> b=set(a)      当集合被创建后,集合里面的内容就无法在进行修改
    >>> b
    set([1, 2, 3, 4, 5, 6])

    集合对象是一组无序排列的可哈希的值:集合成员可以作为字典的键,列表,字典,元祖这些就是不可哈希的代表。

    如何查看集合中的数据:

    1、通过for循环的方式查看

    2、通过迭代器的方式去查看

    不可变集合:不可以向集合中添加删除元素,非可哈希的,不能用作字典的键,也不能做其他集合的元素。

    日常操作:

    1、创建集合:由于集合没有自己的语法格式,只能通过集合的工厂方法set()和forzenset()来创建。

    >>> set("[1,2,3,4,5]")
    set([',', '1', '3', '2', '5', '4', '[', ']'])

    2、访问集合:由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能通过循环遍历或使用用in、not in 来访问或者判断集合元素。

    >>> b
    set([1, 2, 3, 4, 5, 6])
    >>> 2 in b
    True

    >>> li = [2,3,'alex']
    >>> li
    [2, 3, 'alex']
    >>> b=set(li)
    >>> b
    set([2, 3, 'alex'])
    >>> 'alex' in b
    True
    >>> 'ale' in b    通过这里可以发现‘alex’在集合中是作为一个整体的,不是作为一个字符串可以进行分开匹配。
    False

    3、更新元素:

    add()方法:添加一个元素,把参数当做一个元素,不管参数的内容是多少。

    >>> b
    set([2, 3, 'alex'])
    >>> b.add('qiyuanchang')
    >>> b
    set([2, 3, 'alex', 'qiyuanchang'])

    update()方法:会把参数当做一个序列,参数会被拆分成序列添加到集合中,有重复的会被做去重操作。

    >>> b
    set([2, 3, 'alex', 'qiyuanchang', 'uu', 'u'])
    >>> b.update('ops')
    >>> b
    set([2, 3, 'alex', 'qiyuanchang', 'uu', 'o', 'p', 's', 'u'])    这里会发下参数ops被做了拆分

    >>> b.update('wwwwww')
    >>> b
    set([2, 3, 'alex', 'qiyuanchang', 'uu', 'o', 'p', 's', 'u', 'w'])    这里重复的几个w都被过滤掉了,只保留了一个

    >>> li
    [2, 3, 'alex']
    >>> b=set(li)
    >>> b
    set([2, 3, 'alex'])
    >>> b.update(['12','qiyuanchang'])    当参数是列表的时候,会把列表中的几个元素拆分添加到集合中。
    >>> b
    set(['12', 2, 3, 'alex', 'qiyuanchang'])

    remove()方法:可以删除集合中的指定元素

    >>> b
    set(['12', 2, 3, 'alex', 'qiyuanchang'])
    >>> b.remove(2)
    >>> b
    set(['12', 3, 'alex', 'qiyuanchang'])

    pop()方法:随机删除集合中的元素,测试得知,应该默认会删除第一个集合元素。

    >>> b
    set(['12', 3, 'alex', 'qiyuanchang'])
    >>> b.pop()
    '12'

    clear()方法:清空集合

    >>> b.clear()
    >>> b
    set([])

    del 方法:删除集合

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

    4、集合的类型操作符:

      in、not in:可以判断一个元素是否存在于集合中

      >>> s=set('qiyuanchang')
      >>> s1=set('yuan')
      >>> s
      set(['a', 'c', 'g', 'i', 'h', 'n', 'q', 'u', 'y'])
      >>> 'q' in s
      True

      集合等价于不等价(==、!=):判断两个集合是否相同

      子集、超集:判断一个集合的元素内容是否是另外一个集合的子集。

      >>> s=set('qiyuanchang')
      >>> s1=set('yuan')
      >>> s1 < s
      True

      联合:联合操作与集合的or操作其实是等价的,联合符号有个等价的方法,union()

      交集:

      差集:

  • 相关阅读:
    强化训练1
    强化训练2
    变量的本质
    抽象层
    安装vs2015
    解决思路
    分析栈的缺点
    (转)使用yuicompressor-maven-plugin压缩js及css文件(二)
    (转)yuicompressor 与 maven结合,打包,压缩js,css (一)
    (转)Properties Editor为你解除通过native2ascii进行Unicode转码的烦恼
  • 原文地址:https://www.cnblogs.com/qiyuanchang/p/7376416.html
Copyright © 2020-2023  润新知