• python之路(四)-set集合


    set集合 set是一个无序且不重复的元素集合
    优点:访问速度快,解决重复问题
    l1 = [1,2,34,5,6,7,4,3,3,]
    s2 = set(l1)  #可以以列表元祖等作为参数传进来,set集合会自动转换成元祖并去重
    #输出结果:
    {1, 2, 34, 4, 5, 6, 7, 3}

    各种方法:add,clear,.....等等

    add 合并集合
    l1 = [1,2,34,5,6,7,4,3,3,]
    l2 = [23,3,4,5,100,2,3]
    s2 = set(l1)  #自动转换并去重
    s2.add(67)
    print(s2)
    cear
    l1 = [1,2,34,5,6,7,4,3,3,]
    l2 = [23,3,4,5,100,2,3]
    s2 = set(l1)  #自动转换并去重
    s2.add(67)
    s2.clear()
    print(s2)
    copy
    l1 = [1,2,34,5,6,7,4,3,3,]
    s2 = set(l1)  #自动转换并去重
    s3 = s2.copy()
    
    print(s3)
    
    #输出结果:
    {1, 2, 34, 4, 5, 6, 7, 3}
    difference  求差集
    l1 = [1,2,34,5,6,7,4,3,3,]
    s1 = set(l1)  #自动转换并去重
    s2 = set([12,3465,75,32,2])
    s3 = s2.difference(s1) #循环s2里的元素跟s1比较,若不存在s1内就会打印
    s4 = s1.difference(s2) #循环s1里的元素跟s2比较,若不存在s1内就会打印
    
    print(s3)
    print(s4)
    
    #输出结果:
    {32, 3465, 75, 12}
    {1, 34, 3, 4, 5, 6, 7}
    difference_update 与difference的区别是它会更新原来的集合
    l1 = [1,2,34,5,6,7,4,3,3,]
    s1 = set(l1)  #自动转换并去重
    s2 = set([12,3465,75,32,2])
    s2.difference_update(s1)
    print(s2)
    
    #输出结果:
    {32, 3465, 75, 12}
    discard  参数为一个字符串或者一个数字,如果该参数在集合内,则删除,若不在,则没有任何操作
    #清除的元素不存在,不采取任何操作
    l1 = [1,2,34,5,6,7,4,3,3,'a','ab'] s1 = set(l1) #自动转换并去重 s1.discard('abc') print(s1) #输出结果: {1, 2, 34, 4, 5, 6, 7, 3, 'a', 'ab'} #参数存集合内,则清除该元素 l1 = [1,2,34,5,6,7,4,3,3,'a','ab'] s1 = set(l1) #自动转换并去重 s1.discard('ab') print(s1) #输出结果: {1, 2, 34, 4, 5, 6, 7, 3, 'a'}
    intersection 取两个结合之间的交集
    l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
    s1 = set(l1)  #自动转换并去重
    s2 = set([1,2,23,3,3,5,2])
    s3 = s2.intersection(s1)
    print(s3)
    #输出结果:
    {1, 2, 3, 5}
    intersection_update 功能与intersection一样,区别是它会更新原来的集合
    l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
    s1 = set(l1)  #自动转换并去重
    s2 = set([1,2,23,3,3,5,2])
    s2.intersection_update(s1)
    print(s2)
    #输出结果
    {1, 2, 3, 5}
    isdisjoint 如果没有交集就返回True,反之则返回False
    l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
    s1 = set(l1)  #自动转换并去重
    s2 = set([1,2,23,3,3,5,2])
    s3 = s2.isdisjoint(s1)
    print(s3)
    
    #输出结果
    False
    
    
    l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
    s1 = set(l1)  #自动转换并去重
    s2 = set([111,222])
    s3 = s2.isdisjoint(s1)
    print(s3)
    #输出结果
    True
    issubset  是否是子集,是则返回True,否则返回False
    l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
    s1 = set(l1)  #自动转换并去重
    s2 = set([111,222])
    s3 = s2.issubset(s1)
    print(s3)
    #输出结果:
    False
    issuperset 是否是父集,是则返回True,否则返回False
    l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
    s1 = set(l1)  #自动转换并去重
    s2 = set([111,222])
    s3 = s2.issuperset(s1)
    print(s3)
    #输出结果:
    False
    pop 随意删除一个元素并返回
    l1 = [1,2,34,5,6,7,4,3,3,'a','ab','ds']
    s1 = set(l1)  #自动转换并去重
    s2 = s1.pop(2)
    print(s2)
    #输出结果
    随意的结果
    remove 删除一个指定的元素,不返回
    l1 = ['a','ab','ds']
    s1 = set(l1)  #自动转换并去重
    s1.remove('a')
    print(s1)
    
    #输出结果
    {'ab', 'ds'}
    symmetric_difference 对称差值,指将两个集合合并后再求差集
    l1 = ['a','ab','ds']
    s1 = set(l1)  #自动转换并去重
    s2 = set([1,2,3,4,'c','d','a'])
    s3 = s1.symmetric_difference(s2)
    s4 = s2.symmetric_difference(s1)
    print(s3)
    print(s4)
    
    #两次打印的结果是一样的
    {1, 2, 3, 4, 'd', 'c', 'ab', 'ds'}
    {1, 2, 3, 4, 'd', 'ds', 'c', 'ab'}
    symmetric_difference_update 与symmetric_difference 功能一样,只是它要更新原来的集合
    update 更新某个元素
    l1 = ['a','ab','ds']
    s1 = set(l1)  #自动转换并去重
    s1.update('cd')
    print(s1)
    #输出结果:
    {'d', 'ab', 'ds', 'a', 'c'}



  • 相关阅读:
    Map集合
    Collection的另外一个子类LinkedList&Set集合
    多项式牛顿迭代 学习笔记
    《混凝土数学》第二章 和式 学习笔记
    洛谷P5039 最小生成树 题解
    gdfzoj#236 | 提高组练习题16 Set
    CF979E 题解
    CF1039D 题解
    CF886E 题解
    CF1061C 题解
  • 原文地址:https://www.cnblogs.com/zhaojianbo/p/5140836.html
Copyright © 2020-2023  润新知