码迷,mamicode.com
首页 > 编程语言 > 详细

python入门 集合(十)

时间:2019-01-22 00:36:30      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:复制   清空   不同   pop   clear   随机   cal   card   intersect   



集合

集合是一个无序的不重复元素序列,可以迭代,也可以修改。集合迭代的时候元素是随机的。

集合通常用来 membership testing, 去重, 也可以用来求交集并集补集。

介绍一下如何创建集合和集合常见的用法。

创建集合

    >>> s1 = set()
    >>> print(s1)
    set()
    
    >>> l1 = [1, 2, 3, 4, 5, 4, 3]
    >>> s2 = set(l1)
    >>> print(s2)
    {1, 2, 3, 4, 5}
    #可以看到集合可以用来去重
    
    >>> s3 = set(‘jwang‘)
    >>> print(s3)
    {‘n‘, ‘w‘, ‘j‘, ‘g‘, ‘a‘}
    # 可以看到集合迭代的时候元素是随机的
    
    >>> s4 = set(["C", “C++”, “Python”])
    >>> print(s4)
    {‘C‘, ‘Python‘, ‘C++‘}

修改集合

  1. 添加 add

        >>> print(s2)
        {1, 2, 3, 4, 5}
        >>> s2.add(6)
        >>> print(s2)
        {1, 2, 3, 4, 5, 6}
        >>> s2.add((7,8))
        >>> print(s2)
        {1, 2, 3, 4, 5, 6, (7, 8)}
  2. 更新:通过传入一个列表来更新 update(list)

      >>> print(s2)
      {1, 2, 3, 4, 5, 6, (7, 8)}
      >>> s2.update([6, 0])
      >>> s2
      {0, 1, 2, 3, 4, 5, 6, (7, 8)}
      >>> s2.update([7, 8, 9], [10, 11])
      >>> s2
      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, (7, 8)}
      >>> 

更新:通过传入一个集合来更新 update(set)

  >>> s2.update({100, 200})
  >>> s2
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 200, 100, (7, 8)}
  1. 删除 remove(val) discard(val)

    不同点是remove在元素不存在时会报错,discard什么也不做。

      >>> s2.remove(0)
      >>> s2
        {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 200, 100, (7, 8)}
      >>> s2.discard(0)
      >>> s2.remove(0)
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        KeyError: 0

一些其他方法

    # copy 浅复制
    >>> s3 = s2.copy()
    >>> s3
    {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 200, 100, (7, 8)}
    # clear 清空
    >>> s3.clear()
    >>> s3
    set()
    # set pop(),随机删除一个元素,并返回
    >>> s = set([1, 2, 3])
    >>> s.pop()
    1
    >>> s
    {2, 3}
    

集合间操作

  1. 交集

    >>> s2 = set([1, 2, 3, 4, 5, 10, 15, 22])
    >>> s1 = set([1, 2, 3, 4, 5, 6, 7, 8])
    >>> s1 & s2
    {1, 2, 3, 4, 5}
    >>> s1.intersection(s2)
    {1, 2, 3, 4, 5}
  2. 求集合的不同

    >>> s1.difference(s2)
    {8, 6, 7}
    >>> s2.difference(s1)
    {10, 22, 15}
  3. 是不是子集

    >>> s3 = set([6, 7, 8])
    >>> s2.issubset(s2)
    True
    >>> s2.issubset(s1)
    False
    >>> s1.issuperset(s3)
    True



python入门 集合(十)

标签:复制   清空   不同   pop   clear   随机   cal   card   intersect   

原文地址:https://www.cnblogs.com/wangjiale1024/p/10301619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!