zoukankan      html  css  js  c++  java
  • Python的set集合

      set集合也用{}表示,set中的元素是不重复的、无序的,且它里面的元素必须是可hash的(int,str,tuple,bool),set是可变的。

      1.使用set去重

    1 m = [1, '苹果', '3', '苹果', 3, 1, '3']
    2 s = list(set(m))
    3 print(s)

    ['苹果', 1, '3', 3]

      2.set集合增删查改
      1)增  使用add

    1 s = {'成龙', '李小龙', '甄子丹', '李连杰'}
    2 s.add('周星驰')
    3 print(s)

    {'周星驰', '李连杰', '甄子丹', '李小龙', '成龙'}

            使用update  ps:迭代添加

    1 s = {'成龙', '李小龙', '甄子丹', '李连杰'}
    2 s.update('周星驰')
    3 print(s)

    {'甄子丹', '驰', '李连杰', '周', '成龙', '星', '李小龙'}

      2)删  使用pop()随机删除一个

    1 s = {'成龙', '李小龙', '甄子丹', '李连杰', '周星驰'}
    2 s.pop()
    3 print(s)

    {'甄子丹', '驰', '李连杰', '周', '成龙', '星', '李小龙'}

             使用remove()直接删除元素

    1 s = {'成龙', '李小龙', '甄子丹', '李连杰', '周星驰'}
    2 s.remove('甄子丹')
    3 print(s)

    {'周星驰', '李连杰', '李小龙', '成龙'}

            使用clear()清空集合

    1 s = {'成龙', '李小龙', '甄子丹', '李连杰', '周星驰'}
    2 s.clear()
    3 print(s)

    set()

      3)修改

      set集合中的数据没有索引,也没办法去定位一个元素,所以没办法直接修改,可以采用先删除后添加的方式来完成修改操作。

      4)set集合是一个可迭代对象,可以进行for循环。

      3.常用操作

      1)交集  &

    1 s1 = {'成龙', '李小龙', '甄子丹', '李连杰', '周星驰'}
    2 s2 = {'甄子丹', '潘长江', '周星驰', '赵本山'}
    3 print(s1 & s2)
    4 print(s1.intersection(s2))

    {'甄子丹', '周星驰'}

      2)并集  |

    1 s1 = {'成龙', '李小龙', '甄子丹', '李连杰', '周星驰'}
    2 s2 = {'甄子丹', '潘长江', '周星驰', '赵本山'}
    3 print(s1 | s2)
    4 print(s1.union(s2))

    {'李连杰', '李小龙', '周星驰', '赵本山', '成龙', '潘长江', '甄子丹'}

      3)差集  -

    1 s1 = {'成龙', '李小龙', '甄子丹', '李连杰', '周星驰'}
    2 s2 = {'甄子丹', '潘长江', '周星驰', '赵本山'}
    3 print(s1 - s2)
    4 print(s1.difference(s2))

    {'李小龙', '李连杰', '成龙'}

      4)反交集  ^

    1 s1 = {'成龙', '李小龙', '甄子丹', '李连杰', '周星驰'}
    2 s2 = {'甄子丹', '潘长江', '周星驰', '赵本山'}
    3 print(s1 ^ s2)
    4 print(s1.symmetric_difference(s2))

    {'李连杰', '成龙', '李小龙', '赵本山', '潘长江'}

      5)子集

    1 s1 = {'甄子丹', '周星驰'}
    2 s2 = {'成龙', '李小龙', '甄子丹', '李连杰', '周星驰'}
    3 print(s1 < s2)
    4 print(s1.issubset(s2))

    Ture

      6)超集

    1 s1 = {'成龙', '李小龙', '甄子丹', '李连杰', '周星驰'}
    2 s2 = {'甄子丹', '周星驰'}
    3 print(s1 > s2)
    4 print(s1.issuperset(s2))

    Ture

      4.frozenset
      可用frozenset定义一个不可变的集合。

  • 相关阅读:
    [luogu4053 JSOI2007] 建筑抢修 (贪心 优先队列)
    [luogu2272 ZJOI2007] 最大半连通子图 (tarjan缩点 拓扑排序 dp)
    20180705 考试记录
    [luogu4310] 绝世好题 (递推)
    [luogu2765 网络流24题] 魔术球问题 (dinic最大流)
    [luogu4151 WC2011] 最大XOR和路径 (线性基)
    [luogu3232 HNOI2013] 游走 (高斯消元 期望)
    [luogu3726 HNOI2017] 抛硬币 (拓展lucas)
    20180703 考试记录
    [spoj] HIGH
  • 原文地址:https://www.cnblogs.com/heshike/p/9416520.html
Copyright © 2011-2022 走看看