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

    一、set集合的创建

    set_list = set([1,3,5,7,9])      #创建一个数值集合  

    set_str = set("world")         #创建一个唯一字符的集合  

    二、set{}集合的特点:

    1、set集合是无序的,跟字典一样,都是无序的,因为是无序的,所有无法通过用索引去求值

     1 >>>dic={"k1":1,"k2":2,"k3":3}  
     2 >>>print(dic)
     3 #可以看到字典是倒着输出的,并没有严格按照顺序输出
     4 {'k3': 3, 'k2': 2, 'k1': 1}   
     5 
     6 >>>list1=[11,22,33,33,11,66,55,99]
     7 >>list2=set(a)
     8 >>print(list2)
     9 #可以看到list2也是并没有严格按照顺序输出
    10 {33, 66, 99, 11, 22, 55}

    2、set{}集合是去重复的

    1 >>>list1=[77,22,33,33,11,66,55,88,77,]
    2 >>>list2=set(list1)
    3 >>>print(list2)
    4 {33, 66, 11, 77, 22, 55, 88}
    5 
    6 >>>str_1="aabbccddfakiclgm"
    7 >>>str_2=set(str_1)
    8 >>>print(str_2)
    9 {'c', 'd', 'l', 'm', 'a', 'g', 'i', 'f', 'b', 'k'}

    三、set集合中的一些常用方法

    1、add()方法,就是添加一些元素

    1 str1=set("bruce")
    2 str1.add("supper")
    3 print(str1)
    4 
    5 #输出以下结果
    6 {'c', 'e', 'r', 'u', 'b', 'supper'}

    2、clear() 方法,就是清空集合里面的元素

    1 str1=set([1,2,3,4])
    2 str1.clear()
    3 print(str1)
    4 
    5 #输出结果
    6 set()

    3、copy()方法,就是拷贝的意思

    1 str3=set([1,2,3,4,5])
    2 str4=str3.copy()
    3 print(str4)
    4 print(str3)
    5 
    6 #输出以下结果,str4就是str3的浅拷贝
    7 {1, 2, 3, 4, 5}
    8 {1, 2, 3, 4, 5}

    4、difference()方法就是找出两个集合的不同元素,相当于求差集

    1 str2=set([1,2,3,4])
    2 str3=set([1,2,3,4,5])
    3 
    4 #用difference方法后可以看到两个集合的差集
    5 {5}

     5、difference_update()方法就是找出两个集合的差集,并把差集更新为第一个集合

     1 >>>str2=set([1,2,3,4])
     2 >>>print(str2)
     3 #输出str2
     4 {1, 2, 3, 4}
     5 
     6 
     7 >>>str3=set([1,2,3,4,5])
     8 >>>print(str3)
     9 #输出str3
    10 {1, 2, 3, 4, 5}
    11 
    12 >>>str3.difference_update(str2)
    13 >>>print(str3)
    14 #先找出str3和str2的不同,即为下面的{5},然后把两个集合的差集赋值给str3
    15 {5}

    6、discard()方法,就是用来移除集合里面指定的元素

    >>>str3=set([1,2,3,4,5])
    >>>str3.discard(4)
    >>>print(str3)
    #可以看到结果中,集合把元素4移除了
    {1, 2, 3, 5}

    7、intersection()方法,就是求两个集合的交集

     1 a=set("hello,world")
     2 b=set("hello")
     3 c=a.intersection(b)
     4 print(c)
     5 #输出结果,得到集合a,b的交集c
     6 {'h', 'l', 'e', 'o'}
     7 
     8 
     9 set1={1,3,4,5,6}
    10 set2={1,4,56,7}
    11 set3=set1.intersection(set2)
    12 print(set3)
    13 #输出结果,得到集合set1,set2的交集set3
    14 {1, 4}

    8.intersection_update()方法,就是求两个集合的交集并把结果更新赋值给第1个集合

    1 set1={1,3,4,5,6}
    2 set2={1,4,56,7}
    3 set1.intersection_update(set2)
    4 
    5 print(set1)
    6 
    7 #输出结果,可以看到set1变为两者的交集
    8 {1, 4}

    9、isdisjoint()判断两个集合间有没有交集,如果没有就返回 True,有就返回False

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

    10、issubset()方法判断这个集合是不是别的集合的子集,是则True,否则False

     1 >>> help(set.issubset)
     2 Help on method_descriptor:
     3 
     4 issubset(...)
     5     Report whether another set contains this set.
     6 
     7 >>> set5={1,2}
     8 >>> set6={1,2,3,4,5}
     9 >>> set5.issubset(set6)
    10 True

    11、issuperset()方法就是判断这个集合是不是别的集合的父集合

     1 >>> set5={1,2}
     2 >>> set6={1,2,3,4,5}
     3 >>> set5.issubset(set6)
     4 #这里看到set5是set6的子集合
     5 True
     6 >>> set5.issuperset(set6)
     7 #这里判断set5不是set6的父集合,返回False
     8 False
     9 >>> set6.issuperset(set5)
    10 #这里判断set5是set6的父集合,返回True
    11 True

    12、pop()方法,就是随机移除集合里面的一个元素,如果集合是空的,就会报错

     1 >>> set_1={1,2,3,4}
     2 >>> set_1.pop(1)
     3 #以下可以看到这个方法里面不能传参数,否则会报错
     4 Traceback (most recent call last):
     5   File "<pyshell#31>", line 1, in <module>
     6     set_1.pop(1)
     7 TypeError: pop() takes no arguments (1 given)
     8 >>> set_1.pop()
     9 1
    10 >>> set_1.pop()
    11 2
    12 >>> set_1.pop()
    13 3
    14 >>> set_1.pop()
    15 4
    16 >>> print(set_1)
    17 set()
    18 >>> set_1.pop()
    19 #当集合里面为空的时候,再去pop就会报错
    20 Traceback (most recent call last):
    21   File "<pyshell#37>", line 1, in <module>
    22     set_1.pop()
    23 KeyError: 'pop from an empty set'

    13、remove()方法,就是删除集合里面指定的元素,当集合里面不存在要移除的元素时会报错,而discard()方法就不会报错,这是它们的区别

     1 >>> s={1,2,3,4,5}
     2 >>> s.discard(6)
     3 >>> print(s)
     4 {1, 2, 3, 4, 5}
     5 >>> s.remove(4)
     6 >>> print(s)
     7 {1, 2, 3, 5}
     8 >>> s.remove(6)
     9 Traceback (most recent call last):
    10   File "<pyshell#46>", line 1, in <module>
    11     s.remove(6)
    12 KeyError: 6

    14、symmetric_difference()方法求对称交集,把两个集合的互为不同的元素放到一起,会返回一个值

    >>> s1={1,2,3,4,5,7,8}
    >>> s2={11,22,3,4,5,77,88}
    #可以看到两个集合的对称交集会返回一个值,所以可以赋值给s3
    >>> s3=s1.symmetric_difference(s2)
    >>> print(s3)
    #所谓对称交集就是把两个集合里互为不同的元素放到一起
    {1, 2, 7, 8, 11, 77, 22, 88}

    15、symmetric_difference_update()方法求对称交集并更新赋值给第一个交集,不会返回值

     1 s1={1,2,3,4,5,7,8}
     2 s2={11,22,3,4,5,77,88}
     3 s3=s1.symmetric_difference_update(s2)
     4 print(s3)
     5 #输出None,因为这个方法不会返回值,所以为None
     6 None
     7 
     8 
     9 s1.symmetric_difference_update(s2)
    10 print(s1)
    11 #输出结果,s1重新赋值为两个集合的对称交集
    12 {1, 2, 3, 4, 5, 7, 8}

    16、union()方法,就是求两个集合的并集

    1 s1={1,2,3,4,5,7,8}
    2 s2={11,22,3,4,5,77,88}
    3 s3=s1.union(s2)
    4 print(s3)
    5 
    6 #以下是输出
    7 {1, 2, 3, 4, 5, 7, 8, 11, 77, 22, 88}

    17、update()方法,更新集合

    1 s1={1,2,3,4,5,7,8}
    2 s4={55,66,99}
    3 s1.update(s4)
    4 print(s1)
    5 #以下是输出
    6 {1, 2, 3, 4, 5, 66, 7, 8, 99, 55}
  • 相关阅读:
    Sublime text 2 编辑器
    SWF文件版本支持映射表
    sql SET DATEFORMAT对日期处理的影响
    关于 getQualifiedDefinitionNames() 的使用场景
    prototypephotoarchive.cs
    jQuery easyui layout布局自适应浏览器大小
    iteratorfamilytree.cs
    内存利用率
    SET LANGUAGE对日期处理的影响示例
    mbox:Unix 的入门级邮箱
  • 原文地址:https://www.cnblogs.com/wspcoding/p/5535836.html
Copyright © 2011-2022 走看看