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

    集合 SET

    定义:

    只有键没有值的字典,保留无序的元素,没有索引。集合的元素不可变。

    创建:

    1.set_1 = set(seq)

    2.set_2 = {} 

    list_1 = [1,2,3,45,4,2]
    set_1 = set(list_1)
    set_2 = {1,1,2,3,4,3}
    print(set_1)             #out:{1, 2, 3, 4, 45}
    print(set_2)             #out:{1, 2, 3, 4}

    创建只有一个元素的集合

    set_11 = set(('python',))  
    set_12 = {'python'}
    set_3 = set('hello')
    print(set_11)           #out:{'python'}
    print(set_12)           #out:{'python'}
    print(set_3)            #out:{{'e', 'l', 'o', 'h'}

    创建多个元素的集合

    set_21 = set(('hello','python'))
    set_22 = set(('hello','python'))
    set_23 = {'hello','python'}
    print(set_21)                  #out:{{'hello', 'python'}
    print(set_22)                  #out:{{'hello', 'python'}
    print(set_23)                  #out:{{'hello', 'python'}

    增:

    单个增加

    set_a = set(('hello','python'))
    set_a.add('world')
    print(set_a)   #out:{'hello', 'python', 'world'}

    批量增加

    set_u =  set(('hello',))
    set_p = set(('python',))
    set_u.update(set_p)
    print(set_u)                #out:{'hello', 'python'}
    set_u.update({'world'})     
    print(set_u)                #out:{'world', 'hello', 'python'}
    set_u.update('world')       
    print(set_u)                #{'w', 'python', 'world', 'o', 'l', 'd', 'r', 'hello'}

     

    删:

    remove:删除指定元素。若元素不存在则会报错。

    discard:删除指定元素。若元素不存在则不会报错。

    pop:随机删除元素,然而在交互模式,pop 是删除集合的第一个元素(排序后的集合的第一个元素)。

    set_r = set(('hello','python','world','qsl'))
    set_r.remove('hello')
    print(set_r)           #out:{'world', 'qsl', 'python'}
    set_r.pop()
    print(set_r)           #out:{'qsl', 'python'}
    set_r.discard('qsl')
    print(set_r)           #out:{'python'}
    set_r.discard('hello')
    print(set_r)           #out:{'python'}
    set_r.remove('hello')  #out:KeyError: 'hello'

    集合的操作:

    #并集
    #set_a|set_b = set_b|set_a = set_a.union(set_b) = set_b.union(set_a)
    set_a = set(('hello','python'))
    set_b = set(('hello','world'))
    print(set_a|set_b)           #out:{'world', 'hello', 'python'}
    set_a.update(set_b)
    print(set_a)                 #out:{'world', 'hello', 'python'} 
    print(set_a.update(set_b))   #out: None
    
    #交集
    #set_a.intersection(set_b)= set_a&set_b =set_b.intersection(set_a) = set_b&set_a
    set_a = set(('hello','python'))
    set_b = set(('hello','world'))
    print(set_a&set_b)           #out:{'hello'}
    
    #差集:set_a中有而set_b中无
    #set_a.difference(set_b) = set_a-set_b
    set_a = set(('hello','python'))   
    set_b = set(('hello','world'))
    print(set_a.difference(set_b))   #out:{'python'}
    print(set_a-set_b)               #out:{'python'}  
    
    
    
    #判断子集:查看set_a是否为set_b的子集
    # set_a.issubset(set_b) = set_a <= set_b
    set_a = set(('hello','python'))   
    set_b = set(('hello','world'))
    print(set_a.issubset(set_b))            #out:False  
    print(set_a <= set_b)                   #out:False         

    内置方法

    序号 方法 说明
    1 add() 为集合添加元素,一次只能加一个
    2 update() 给集合添加元素,一个可以加多个
    3 copy() 拷贝一个集合
    4 clear() 移除集合中的所有元素
    5 discard() 删除集合中指定的元素,若不存在,不会报错
    6 remove() 移除指定元素,若不存在,则会报错
    7 pop() 随机移除元素
    8 union()  返回两个集合的并集
    9 intersection()  返回集合的交集
    10 difference() 返回多个集合的差集
    11 difference_update() 移除集合中的元素,该元素在指定的集合也存在
    12

    intersection_update()

     删除集合中的元素,该元素在指定的集合中不存在
    13 issubset()  判断指定集合是否为该方法参数集合的子集。
    14 isdisjoint()  判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
    15 issuperset()  判断该方法的参数集合是否为指定集合的子集
    16 symmetric_difference()  返回两个集合中不重复的元素集合
    17

    symmetric_difference_update() 

    移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中

    推导式:

     和列表推导式相似,都是对一个序列进行操作。

    但集合推导式的结果无序且不重复。

    list_1 = [1,2,3,-1,4,-2]
    set_1 = { i**2 for i in list_1 }
    print(set_1)                       #out:{16, 1, 4, 9}
    print(type(set_1))                 #out:<class 'set'>
  • 相关阅读:
    audio_音频
    调试C++NPv2_TP_Reactor_Log_Server程序
    2019 SDN大作业(咕咕咕队)
    第09组 Beta版本演示
    第09组 Beta冲刺(4/4)
    第09组 Beta冲刺(3/4)
    2019 SDN上机第7次作业
    第09组 Beta冲刺(2/4)
    第09组 Beta冲刺(1/4)
    2019 SDN上机第6次作业
  • 原文地址:https://www.cnblogs.com/qianslup/p/11061679.html
Copyright © 2011-2022 走看看