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'>
  • 相关阅读:
    2015531 网络攻防 Exp1 PC平台逆向破解(5)M
    2017-2018-1 20155331 嵌入式C语言
    20155330 《网络对抗》 Exp9 web安全基础实践
    20155330 《网络对抗》 Exp8 Web基础
    20155330 《网络对抗》 Exp7 网络欺诈防范
    20155330 《网络对抗》 Exp6 信息搜集与漏洞扫描
    20155330 《网络对抗》 Exp5 MSF基础应用
    20155330 《网络攻防》 Exp4 恶意代码分析
    20155330 《网络攻防》 Exp3 免杀原理与实践
    20155330 《网络对抗》 Exp2 后门原理与实践
  • 原文地址:https://www.cnblogs.com/qianslup/p/11061679.html
Copyright © 2011-2022 走看看