• python集合操作


    一:python官方文档

      https://docs.python.org/3.6/library/stdtypes.html#set-types-set-frozenset

    二:集合概念

    • 集合是无序的
    • 集合是无重复元素的

    一:add()

    会改变原有集合

    1 >>> s = set('HackerRank')
    2 >>> s.add('H')
    3 >>> print s
    4 set(['a', 'c', 'e', 'H', 'k', 'n', 'r', 'R'])
    5 >>> print s.add('HackerRank')#添加后返回none
    6 None
    7 >>> print s
    8 set(['a', 'c', 'e', 'HackerRank', 'H', 'k', 'n', 'r', 'R'])
    set.add()

    二:pop(),discard(),remove()

    •  pop()是随机删除元素
    •  discard(),remove()是删除指定元素的
    •     discard()在删除不存在元素是不会报错,而remvoe()会报keyerror错误
    •     都会改变原有集合

    set.pop()

    1 >>> s = set([1])
    2 >>> print s.pop()
    3 1
    4 >>> print s
    5 set([])
    6 >>> print s.pop()
    7 KeyError: pop from an empty set
    set.pop()

    set.remove()

     1 >>> s = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
     2 >>> s.remove(5)
     3 >>> print s
     4 set([1, 2, 3, 4, 6, 7, 8, 9])
     5 >>> print s.remove(4)#默认返回None
     6 None
     7 >>> print s
     8 set([1, 2, 3, 6, 7, 8, 9])
     9 >>> s.remove(0)
    10 KeyError: 0
    set.remove()

    set.discard()

     1 >>> s = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
     2 >>> s.discard(5)
     3 >>> print s
     4 set([1, 2, 3, 4, 6, 7, 8, 9])
     5 >>> print s.discard(4)
     6 None
     7 >>> print s
     8 set([1, 2, 3, 6, 7, 8, 9])
     9 >>> s.discard(0)
    10 >>> print s
    11 set([1, 2, 3, 6, 7, 8, 9])
    set.discard()

    三:intersetcion(),difference(),unoin(),symmetric_difference(),交集,差集,并集,对称差集

    不改变原有集合

    set.intersection()

     1 >>> s = set("Hacker")
     2 >>> print s.intersection("Rank")
     3 set(['a', 'k'])
     4 
     5 
     6 >>> print s.intersection(['R', 'a', 'n', 'k'])
     7 set(['a', 'k'])
     8 
     9 >>> print s.intersection(enumerate(['R', 'a', 'n', 'k']))
    10 set([])
    11 
    12 >>> print s.intersection({"Rank":1})
    13 set([])
    14 
    15 >>> s & set("Rank")
    16 set(['a', 'k'])
    set.intersection()

    set.difference()

     1 #set1有的而set2没有的元素
     2 >>> s = set("Hacker")
     3 >>> print s.difference("Rank")
     4 set(['c', 'r', 'e', 'H'])
     5 
     6 >>> print s.difference(set(['R', 'a', 'n', 'k']))
     7 set(['c', 'r', 'e', 'H'])
     8 
     9 >>> print s.difference(['R', 'a', 'n', 'k'])
    10 set(['c', 'r', 'e', 'H'])
    11 
    12 >>> print s.difference(enumerate(['R', 'a', 'n', 'k']))
    13 set(['a', 'c', 'r', 'e', 'H', 'k'])
    14 
    15 >>> print s.difference({"Rank":1})
    16 set(['a', 'c', 'e', 'H', 'k', 'r'])
    17 
    18 >>> s - set("Rank")
    19 set(['H', 'c', 'r', 'e'])
    set.difference()

    set.unoin()

     1 >>> s = set("Hacker")
     2 >>> print s.union("Rank")
     3 set(['a', 'R', 'c', 'r', 'e', 'H', 'k', 'n'])
     4 
     5 >>> print s.union(set(['R', 'a', 'n', 'k']))
     6 set(['a', 'R', 'c', 'r', 'e', 'H', 'k', 'n'])
     7 
     8 >>> print s.union(['R', 'a', 'n', 'k'])
     9 set(['a', 'R', 'c', 'r', 'e', 'H', 'k', 'n'])
    10 
    11 >>> print s.union(enumerate(['R', 'a', 'n', 'k']))
    12 set(['a', 'c', 'r', 'e', (1, 'a'), (2, 'n'), 'H', 'k', (3, 'k'), (0, 'R')])
    13 
    14 >>> print s.union({"Rank":1})
    15 set(['a', 'c', 'r', 'e', 'H', 'k', 'Rank'])
    16 
    17 >>> s | set("Rank")
    18 set(['a', 'R', 'c', 'r', 'e', 'H', 'k', 'n'])
    set.union()

     set.symmetric_difference()

     1 >>> s = set("Hacker")
     2 >>> print s.symmetric_difference("Rank")
     3 set(['c', 'e', 'H', 'n', 'R', 'r'])
     4 
     5 >>> print s.symmetric_difference(set(['R', 'a', 'n', 'k']))
     6 set(['c', 'e', 'H', 'n', 'R', 'r'])
     7 
     8 >>> print s.symmetric_difference(['R', 'a', 'n', 'k'])
     9 set(['c', 'e', 'H', 'n', 'R', 'r'])
    10 
    11 >>> print s.symmetric_difference(enumerate(['R', 'a', 'n', 'k']))
    12 set(['a', 'c', 'e', 'H', (0, 'R'), 'r', (2, 'n'), 'k', (1, 'a'), (3, 'k')])
    13 
    14 >>> print s.symmetric_difference({"Rank":1})
    15 set(['a', 'c', 'e', 'H', 'k', 'Rank', 'r'])
    16 
    17 >>> s ^ set("Rank")
    18 set(['c', 'e', 'H', 'n', 'R', 'r'])
    set.symmertic_difference

    四:update(),difference_update(),set.symmetric_difference_update()

    set.update(set2):以集合2还更新集合1,加入到集合1中

    1 >> myset.update([1, 2, 3, 4]) # update() only works for iterable objects
    2 >> myset
    3 {'a', 1, 'c', 'b', 4, 2, (5, 4), 3}
    4 >> myset.update({1, 7, 8})
    5 >> myset
    6 {'a', 1, 'c', 'b', 4, 7, 8, 2, (5, 4), 3}
    7 >> myset.update({1, 6}, [5, 13])
    8 >> myset
    9 {'a', 1, 'c', 'b', 4, 5, 6, 7, 8, 2, (5, 4), 13, 3}
    set.update()

    set.difference_update(set2):用set1-set2来更新set1,覆盖set1值

    1 #用A,B的差集来更新A
    2 >>> H = set("Hacker")
    3 >>> R = set("Rank")
    4 >>> H.difference_update(R)
    5 >>> print H
    6 set(['c', 'e', 'H', 'r'])
    set.difference——update()

    set.symmetric_difference_update(set2):用set1和set2的对称差集来更新set1,覆盖set1的值

    1 #用A,b互相差集来更新A
    2 >>> H = set("Hacker")
    3 >>> R = set("Rank")
    4 >>> H.symmetric_difference_update(R)
    5 >>> print H
    6 set(['c', 'e', 'H', 'n', 'r', 'R'])
    set.systemeratic_update()

    五:isdisjoint(), issubset(), issuperset()

    set.isdisjoint():如果两个集合没有交集则返回True。

    1s1,s2={1,2,3},{4,5,6}23s1.isdisjoint(s2)4True
    set.isdisjoint()

    issubset():是否为子集

    issubset(other)
    set <= other

    Test whether every element in the set is in other.

    set < other:严格子集

    Test whether the set is a proper subset of other, that is, set <= other and set != other

     1 >>> set1={1,2,3,4,5}
     2 >>> set2={1,2,3,4,5,6}
     3 >>> set1.issubset(set2)
     4 True
     5 >>> set3={1,2,3,4,5,6}
     6 >>> set3.issubset(set2)
     7 True
     8 >>> set3<set2
     9 False
    10 >>> set1<set2
    11 True
    View Code
    issuperset(other)
    set >= other

    Test whether every element in other is in the set.

    set > other:严格父集

    Test whether the set is a proper superset of other, that is, set >= other and set != other.

    https://www.hackerrank.com/challenges/py-check-strict-superset/problem
    解决方法
    a = set(input().split())
    print(all(a > set(input().split()) for _ in range(int(input()))))
    

      

  • 相关阅读:
    AddTransient、AddSingleton、AddScoped的区别
    ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)
    DotNetCore 结合 Nginx 将网站部署到阿里云
    centos7安装配置mysql8
    centos7安装nginx
    ASP.NET Core搭建多层网站架构【0-前言】
    .Net Core3.0 WebApi 二:API 文档神器 Swagger
    .Net Core3.0 WebApi 三:读取appsettings.json
    .Net Core3.0 WebApi 四:JWT权限验证
    vue动态配置参数,避免重复打包
  • 原文地址:https://www.cnblogs.com/Mr-l/p/10767637.html
Copyright © 2020-2023  润新知