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  
    这两个方法和上述类似
  • 相关阅读:
    SQL查询,所有的客户订单日期最新的前五条订单记录。
    session的原理
    @RequestMapping 注解用在类上面有什么作用?
    事务的概念,在JDBC编程中处理事务的步骤
    .Redis优势
    Spring框架中都用到了哪些设计模式?
    redis
    你为什么觉得自己能够在这个职位上取得成就?
    怎样理解团队?请举例并说明启示。
    物质待遇和工作条件是人们选择工作的重要因素之一,这次报考谈一谈你在选择工作时都考虑哪些因素?为什么?
  • 原文地址:https://www.cnblogs.com/caimengzhi/p/8288605.html
Copyright © 2011-2022 走看看