zoukankan      html  css  js  c++  java
  • Python 基础

    1.集合的创建

    集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。

    创建集合:大括号或 set() 函数可以用来创建集合。注意:想要创建空集合,你必须使用 set() 而不是 {},后者用于创建空字典。大括号也不可以创建元素含有字典与列表的集合。

    集合中三个特性

    1. 确定性

    2. 互异性(去重)

    3. 无序性(集合中元素没有先后之分),如集合{3,4,5}和{3,5,4}算作一个集合

    In [79]: s = {1}
    In [80]: type(s)
    Out[80]: set
    In [81]: s = {1,2,3,5,6,3}
    In [82]: type(s)
    Out[82]: set
    In [85]: s  # 去重了(3 出现两次)
    Out[85]: {1, 2, 3, 5, 6}

    集合创建

    # 1. 直接创建
    In [102]: s = {1,2,3,4,3,5}
    In [103]: s
    Out[103]: {1, 2, 3, 4, 5}
    In [104]: type(s)
    Out[104]: set
    
    # 2. 通过列表转成集合
    In [105]: l=[1,2,3,4,5,6,3]
    In [106]: s=set(l)
    In [107]: s
    Out[108]: {1, 2, 3, 4, 5, 6}
    
    # 3. 通过元组转换成集合
    In [109]: t=(1,2,3,4,5,6,3)
    In [110]: s=set(t)
    In [111]: s
    Out[111]: {1, 2, 3, 4, 5, 6}

    增加:

    add ,之前集合中有就不添加,没有就添加,但是每次只能添加一个值,否则报错

     # 集合中有就不增加,没有就增加
    In [124]: s = {1,2,3,4,5}
    
    In [125]: s.add(2)  # 之前有就不增加
    
    In [126]: s
    Out[126]: {1, 2, 3, 4, 5}
    
    In [127]: s.add(6)    #之前没有,就增加
    
    In [128]: s
    Out[128]: {1, 2, 3, 4, 5, 6}

     In [147]: s.add(1,23)  # 因为只允许添加一个,此时添加多个就报错
     ---------------------------------------------------------------------------
     TypeError Traceback (most recent call last)
     <ipython-input-147-4b15bfd145fc> in <module>()
     ----> 1 s.add(1,23)  

     TypeError: add() takes exactly one argument (2 given) 提示说指给一个参数,上面却给了两个参数

    删除

    pop 随机删除

    In [129]: s
    Out[129]: {1, 2, 3, 4, 5, 6}
    
    In [130]: s.pop()
    Out[130]: 1
    
    In [131]: s
    Out[131]: {2, 3, 4, 5, 6}

    remove指定删除,没有就报错

    In [131]: s
    Out[131]: {2, 3, 4, 5, 6}
    
    In [132]: s.remove(6)
    
    In [133]: s
    Out[133]: {2, 3, 4, 5}

     In [138]: s.remove(10)
     ---------------------------------------------------------------------------
     KeyError Traceback (most recent call last)
     <ipython-input-138-99f2b84d3df8> in <module>()
     ----> 1 s.remove(10)

     KeyError: 10

    discard 删除, 有就删除,没有就不删除也不报错

    In [139]: s
    Out[139]: {2, 4, 5}
    
    In [140]: ret=s.discard(2)
    
    In [141]: ret
    
    In [142]: ret=s.discard(100)
    
    In [143]: ret

    update更新

    In [145]: s.update([1,2,3,4]) # 以列表方式添加
    
    In [146]: s
    Out[146]: {1, 2, 3, 4, 5}

    In [150]: s.update((10,11)) # 以元组方式添加
    In [151]: s

    Out[151]: {1, 2, 3, 4, 5, 10, 11}

    clear 清除

    In [152]: s.clear()
    
    In [153]: s
    Out[153]: set()

    集合类型的关系

    1. 交集

    In [1]: iphone7 = {'cmz','aimi','keke','jack'}
    
    In [2]: iphone8 = {'cmz','Tom','eric'}
    
    In [3]: iphone7.intersection(iphone8)
    Out[3]: {'cmz'}

    或者

     In [4]: iphone7&iphone8  # 去交集
     Out[4]: {'cmz'}

    2. 差集

    In [5]: iphone7.difference(iphone8)
    Out[5]: {'aimi', 'jack', 'keke'}
    
    In [6]: iphone7-iphone8
    Out[6]: {'aimi', 'jack', 'keke'}
    
    In [7]: iphone8.difference(iphone7)
    Out[7]: {'Tom', 'eric'}
    
    In [8]: iphone8-iphone7
    Out[8]: {'Tom', 'eric'}

    3. 并集

    In [10]: iphone7.union(iphone8) # 顺序没先后
    Out[10]: {'Tom', 'aimi', 'cmz', 'eric', 'jack', 'keke'}
    
    In [11]: iphone7|iphone8  # 顺序没先后
    Out[11]: {'Tom', 'aimi', 'cmz', 'eric', 'jack', 'keke'}

    4. 对称差集(交集取反)

    In [25]: s = {1,2,3,4}
    
    In [26]: s2 = {2,3,5,6}
    
    In [27]: s^s2
    Out[27]: {1, 4, 5, 6}
    
    In [28]: s.symmetric_difference(s2)
    Out[28]: {1, 4, 5, 6}

    5.子集

    In [37]: s
    Out[37]: {1, 2, 3, 4}
    
    In [38]: s2
    Out[38]: {1, 2, 3, 4, 5, 6}
    
    In [39]: s.issubset(s2)   # s是s2的的子集
    Out[39]: True
    或者

     In [44]: s2<=s

     Out[44]: False

    
    In [40]: s2.issuperset(s) # s2是s的的超集
    Out[40]: True
    或者

     In [43]: s2>=s
     Out[43]: True

    其他

    In [50]: s1={1,2,3}
    In [51]: s2={1,2,4,5}
    In [52]: s1.difference(s2)   #求出 s1 s2的差集
    Out[52]: {3} 
     
    In [54]: s1.difference_update(s2)
    In [55]: s1
    Out[55]: {3} # 此时将差集的值赋值给s1
    In [56]: s2
    Out[56]: {1, 2, 4, 5}
    s.intersection_update
    s.symmetric_difference_update  
    这两个方法和上述类似
  • 相关阅读:
    Matplotlib
    【源码解读】EOS测试插件:txn_test_gen_plugin.cpp
    EOS多节点组网:商业场景分析以及节点启动时序
    EOS商业落地利器:多签名操作与应用
    EOS技术研究:合约与数据库交互
    【精解】EOS标准货币体系与源码实现分析
    【精解】EOS智能合约演练
    Efficient&Elegant:Java程序员入门Cpp
    区块链3.0:拥抱EOS
    以太坊挖矿源码:clique算法
  • 原文地址:https://www.cnblogs.com/caimengzhi/p/8288605.html
Copyright © 2011-2022 走看看