zoukankan      html  css  js  c++  java
  • python之set

    一、set集合介绍

    set集合,是一个无序的,且不重复的元素集合

    定义方式使用"{}",也可以使用set(iterable)内置函数定义,但iterable参数只能是可迭代对象的对象

    >>> set1 = {1,2,3,4,1,3}  #定义集合,默认会将重复的去掉
    >>> set1
    {1, 2, 3, 4}
    
    >>> aa = 'abcde'
    >>> set2 = set(aa)  #使用set函数定义集合
    >>> set2
    {'a', 'b', 'd', 'c', 'e'}
    >>> set3 = set('python')
    >>> set3
    {'y', 'p', 'o', 'h', 'n', 't'}
    
    >>> set2 = set(range(5))  #如果使用数字必须使用迭代序列
    >>> set2
    {0, 1, 2, 3, 4}

    二、集合的方法

    1、s.add()添加元素

    >>> set2
    {1, 2, 3, 4, 5}
    >>> set2.add(6)
    >>> set2
    {1, 2, 3, 4, 5, 6}
    >>> set2.add('addr')
    >>> set2
    {1, 2, 3, 4, 5, 6, 'addr'}
    

    2、s.clear()清空所有元素

    >>> set2
    {1, 2, 3, 4, 5, 6, 'addr'}
    >>> set2.clear()
    >>> set2
    set()

    3、s.copy()浅拷贝

    >>> set1
    {1, 2, 3, 4, 6, 'addr'}
    >>> set3=set1.copy()
    >>> set3
    {1, 2, 3, 4, 6, 'addr'}

    4、s.difference(b)

    返回两个集合差集中s的元素

    >>> set1 = {1,2,3,4}
    >>> set2 = {3,4,5,6}
    >>> set1.difference(set2)  #用set2比较set1时,返回set1和set2交集中set1剩余的元素
    {1, 2}
    >>> set2.difference(set1) #理解同上,返回自身集合中对方集合没有的新集合
    {5, 6}

    5、s.difference_update(b)

    从s集合中移除与b集合交集的元素,并更新到s集合

    >>> set1 = {1,2,3,4}
    >>> set2 = {3,4,5,6}
    >>> set1.difference_update(set2)
    >>> set1
    {1, 2}
    >>> set2.difference_update(set1) #没有交集元素,所以不变
    >>> set2
    {3, 4, 5, 6}

    6、s.discard(obj)

    删除指定元素,如不存在不会报错

    >>> set2
    {3, 4, 5, 6}
    >>> set2.discard(6)
    >>> set2
    {3, 4, 5}
    >>> set2.discard(7)  #元素不存在,没有报错
    >>> set2
    {3, 4, 5}

    7、s.intersection(b)

    返回两个或多个集合的交集,并返回

    >>> set1 = {1,2,3,4}
    >>> set2 = {3,4,5,6}
    >>> set1.intersection(set2)  #返回交集值
    {3, 4}
    >>> set3 = {3,6,8,9}
    >>> set1.intersection(set2,set3) #必须三个set都存在才返回
    {3}

    8、s.intersection_update(b)

    根据当前s与比较b的交集值更新到s集合中

    >>> set1 = {1,2,3,4,5,6}
    >>> set2 = {3,4,5,7,8,9}
    >>> set1.intersection_update(set2) #取交集值更新到自身set
    >>> set1
    {3, 4, 5}
    >>> set2
    {3, 4, 5, 7, 8, 9}

    9、s.isdisjoint(b)

    如果两个集合没有交集返回True否则返回False

    >>> set1 = {1,2,3,4,5}
    >>> set2 = {4,5,6,7,8}
    >>> set1.isdisjoint(set2)
    False
    >>> set3 = {22,33}
    >>> set1.isdisjoint(set3)
    True

    10、s.issubset(b)

    s集合元素是否被b集合包含,是则返回True否则返回False

    >>> s1 = {1,2}
    >>> s2 = {1,2,3,4}
    >>> s3 = {11,22}
    >>> s1.issubset(s2)
    True
    >>> s1.issubset(s3)
    False

    11、s.issuperset(b)

    判断s集合元素是否包含了所以b的集合元素,是返回True否则返回False

    >>> s1 = {1,2}
    >>> s2 = {1,2,3,4}
    >>> s2.issuperset(s1)
    True
    >>> s1.issuperset(s2)
    False

    12、s.pop()

    集合默认排序后,随机删除一个元素,并返回该元素,默认删除第一个元素

    >>> s2 = {'name','age','salary','shool'}
    >>> s2
    {'salary', 'name', 'shool', 'age'}
    >>> s2.pop()
    'salary'
    >>> s2.pop()
    'name'
    >>> s2.pop()
    'shool'

    13、s.remove(obj)

    移除集合中的指定值,和discard一样,只是remove在值不存在时会报错。

    >>> s1 = {1,2,3,4}
    >>> s1.remove(2)
    >>> s1
    {1, 3, 4}
    >>> s1.remove(5)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 5

    14、s.symmetric_difference()

    返回两个集合的差集

    >>> s1 = {1,2,3,4}
    >>> s2 = {3,4,5,6}
    >>> s1.symmetric_difference(s2)  #返回两个集合不交集的元素
    {1, 2, 5, 6}
    >>> s2.symmetric_difference(s1)
    {1, 2, 5, 6}

    15、s.symmetric_difference_update(b)

    将两个集合不交集的元素返回给s

    >>> s1 = {1,2,3,4}
    >>> s2 = {3,4,5,6}
    >>> s1.symmetric_difference_update(s2)
    >>> s1
    {1, 2, 5, 6}

    16、s.union(b)

    返回两个集合的并集

    >>> s1 = {1,2,3,4}
    >>> s2 = {3,4,5,6}
    >>> s1.union(s2)
    {1, 2, 3, 4, 5, 6}

    17、s.update(b)

    以集合b扩展s集合

    >>> s1 = {1,2,3}
    >>> s2 = {4,5,6}
    >>> s1.update(s2)
    >>> s1
    {1, 2, 3, 4, 5, 6}
  • 相关阅读:
    python学习笔记
    Jenkins 共享库最佳实践
    django form 表单
    cenos7搭建openldap双主+keepalived+tls
    jenkins+ansible+gitlab
    centos7搭建zabbix3.4.13
    HTTP八种响应方式
    django administration 小记
    django manage.py 详解
    Django settings详解
  • 原文地址:https://www.cnblogs.com/zhangxinqi/p/7603021.html
Copyright © 2011-2022 走看看