• 【Rollo的Python之路】Python:集合学习笔记 Set


    集合

    一个无序的,不重复的序列。

    1.0 无序代表无法索引

    2.0 不重复代表可以用来对元素去重

    3.0 元素可哈希的,列表不可以,字典的value不能set

    只能用set,或者大括号{} 创建。

    basket1 = set("abcEfghjpkgabc")
    basket2 = set("1235646ghj123652")
    
    print(basket1)
    print(basket2)
    
    #执行结果:
    
    {'k', 'g', 'E', 'c', 'f', 'a', 'p', 'b', 'h', 'j'}
    {'g', '3', '6', '2', '5', '1', 'h', 'j', '4'}

    去重:

    computer_brand = {"apple","dell","Hp","lenov","apple"}
    print(computer_brand)
    
    #执行结果:
    {'dell', 'apple', 'Hp', 'lenov'}

    set本身是一个不可以哈希的,所以不能做为dict的key

    set 可以为:可变集合与不可变集合(frozenset).

    访问集合:in,not in,判断一个元素是否在集合里面

         用for语句去取值。

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    
    print(a)
    print(b)
    
    print(2 in a)
    print(4 in b)
    
    #执行结果:
    
    {1, 2, 3, 4, 5, 6}
    {5, 6, 7, 8, 9, 10}
    True
    False

    set 更新:set.add,set.update

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    
    a.add("u")
    print(a)
    a.add("uu")
    
    print(a)
    
    #执行结果:
    
    {1, 2, 3, 4, 5, 6, 'u'}
    {1, 2, 3, 4, 5, 6, 'u', 'uu'}
    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    
    a.update("opsok") #update会把里面的元素分开处理,add只是当一个整体
    print(a)
    
    #执行结果:
    
    {'o', 1, 2, 3, 4, 5, 6, 'k', 'p', 's'} 
    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    
    a.update(["opsok",123])
    print(a)
    
    #执行结果:
    
    {1, 2, 3, 4, 5, 6, 'opsok', 123}

    set.remove(),只能一次remove一个元素。

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    
    a.remove(4)
    print(a)
    
    #执行结果:
    {1, 2, 3, 5, 6}
    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    
    a.pop() #随机删除
    print(a)
    
    #执行结果:
    
    {2, 3, 4, 5, 6}

    set.clear

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    
    a.clear()  #清空
    print(a) 
    
    #执行结果:
    set()

    del.set 删除

    set.copy

    集合运算

    1.0 交集:set.intersection(set1, set2 ... etc),共同有的 符号:"a&b"

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    c = {4,5,6,12,25,13,8,9,10}
    
    print(a.intersection(b,c))
    
    #执行结果:
    
    {5, 6}

    2.0 并集:set.union(set1, set2...),所有集合有的全在一起 ,符号:a“|b”

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    c = {4,5,6,12,25,13,8,9,10}
    
    print(a.union(b,c))
    
    #执行结果:
    
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 25}

    3.0 差集:difference() 方法用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中 符号:"a-b"

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    c = {4,5,6,12,25,13,8,9,10}
    
    print(a.difference(b,c))
    
    #执行结果:
    
    {1, 2, 3}

    4.0 反相交集:symmetric_difference() 方法返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素  符号:"a^b"

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    c = {4,5,6,12,25,13,8,9,10}
    
    print(a.symmetric_difference(b))
    
    #执行结果:
    {1, 2, 3, 4, 7, 8, 9, 10}

    5.0 父子集:issuperset() 方法用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False

    set.symmetric_difference(set)

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    c = {4,5,6,12,25,13,8,9,10}
    
    print(a.issuperset(b)) #a 是否完全包括b 父集
    print(a.issubset(b)) # a是否在在b里面 子集
    
    #执行结果:
    False
    False

    intersection_update() 方法用于获取两个或更多集合中都重叠的元素,即计算交集。

    intersection_update() 方法不同于 intersection() 方法,因为 intersection() 方法是返回一个新的集合,而 intersection_update() 方法是在原始的集合上移除不重叠的元素。

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    
    a.intersection_update(b)
    print(a)
    
    #执行结果:
    
    {5, 6}

    symmetric_difference_update() 方法

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

    set.symmetric_difference_update(set)

    num1 =(1,2,3,4,5,6)
    num2 =(5,6,7,8,9,10)
    
    a = set(num1)
    b = set(num2)
    
    a.symmetric_difference_update(b)
    print(a)
    
    
    #执行结果:
    
    {1, 2, 3, 4, 7, 8, 9, 10}

    difference_update()

    difference_update() 方法用于移除两个集合中都存在的元素。

    difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。

    set.difference_update(set)
    
    
  • 相关阅读:
    ftp>ls 未连接
    Error running 'run': data.userName must not be null
    Excel另存为_有些Excel打开时会出现一些提示
    23种设计模式通俗理解
    清除html中的标记,只留下文字
    将DataTable中的数据导出成Excel
    C#读取文件
    系统性能瓶颈分析
    Angularjs的My97DatePicker扩展
    Memcache修改端口
  • 原文地址:https://www.cnblogs.com/rollost/p/10776754.html
Copyright © 2020-2023  润新知