zoukankan      html  css  js  c++  java
  • python之set集合操作

    set集合天生具有去重功能

    1、创建集合,集合的value类型:string、tuple、frozenset、数字等不可变类型;

     1 s1 =set()#空集合
     2 s2=set("13784934")
     3 s3=set(["xue","zhi","qian"])
     4 s4={"1","2","3","5","6","3","3","35"}
     5 print(s1)
     6 print(s2)
     7 print(s3)
     8 print(s4)
     9 
    10 # 以上打印结果是
    11 set()
    12 {'7', '8', '4', '3', '1', '9'}
    13 {'xue', 'zhi', 'qian'}
    14 {'6', '35', '3', '5', '1', '2'}

    2、如果要在许多列表中找出相同的项,那么用集合是最好不过的了,用集合只用一行就可以解决,那就是取交集;例如:

    (1)第一种方法:

    1 s2=set("13784934")
    2 s4={"1","2","3","5","6","3","3","35"}
    3 print(s2&s4)#取交集
    4 
    5 # 以上打印结果是
    6 {'1', '3'}

    (2)第二种方法:

    1 s3=set(["xue","zhi","qian"])
    2 s4={"1","2","3","5","6","3","3","35"}
    3 print(s3.intersection(s2))#取交集
    4 
    5 # 以上打印结果是
    6 set() #集合s2和s3没有交集,所以结果为set()

    3、取并集,就是把两个集合合并到一起去重,例如:

    (1)第一种方法:

    1 s2=set("13784934")
    2 s3=set(["xue","zhi","qian"])
    3 print(s2|s3)#取并集
    4 
    5 # 以上打印结果是
    6 {'qian', '1', 'xue', '4', 'zhi', '9', '3', '8', '7'}

    (2)第二种方法:

    s2=set("13784934")
    s3=set(["xue","zhi","qian"])
    print(s2.union(s3))#取并集
    
    # 以上运行结果是
    {'qian', '1', 'xue', '4', 'zhi', '9', '3', '8', '7'}

    4、取差集,就是一个集合中有另一个集合中没有的,例如:

    (1)第一种方法:

    1 s5 ={1,2,3}
    2 s6={1,4,6}
    3 print(s5-s6)#取差集,s5中有,s6中没有的
    4 print(s6-s5)#取差集,s6中有,s5中没有的
    5 
    6 #以上运行结果是
    7 {2, 3}
    8 {4, 6}

    (2)第二种方法:

    1 s5 ={1,2,3}
    2 s6={1,4,6}
    3 print(s5.difference(s6))#取差集,s5中有,s6中没有的
    4 
    5 
    6 #以上运行结果是
    7 {2, 3}

    5、对称差集,就是俩集合里面都没有的,例如:

    (1)第一种方法:

    1 s5 ={1,2,3}
    2 s6={1,4,6}
    3 print(s5 ^ s6)#取对称差集
    4 
    5 
    6 #以上运行结果是
    7 {2, 3, 4, 6}

    (2)第二种方法:

    1 s3=set(["xue","zhi","qian"])
    2 s4={"1","2","3","5","6","3","3","35"}
    3 print(s4.symmetric_difference(s3))#取对称差集
    4 
    5 # 以上运行结果是
    6 {'qian', '5', '1', '3', '35', '2', '6', 'zhi', 'xue'}

    6、向集合中增加元素,例如:

    1 s5 ={1,2,3}
    2 s5.add("ss") #加元素
    3 print(s5)
    4 
    5 #以上运行结果是
    6 {'ss', 1, 2, 3}

    7、删除元素

    (1)第一种方法:使用pop()随机删除一个

    1 s6={1,4,6}
    2 s6.pop()#随机删除一个
    3 print(s6)
    4 
    5 #以上运行结果是
    6 {4, 6}

    (2)第二种方法:使用remove()指定删除哪一个元素,例如:

    1 s5 ={1,2,3,"SS"}
    2 s5.remove("SS")#指定删除哪个
    3 print(s5)
    4 
    5 #以上运行结果是
    6 {1, 2, 3}

    (3)使用update加入一个集合:

    1 s4={"1","2","3","5","6","3","3","35"}
    2 s4.update({1,2,3})#把另外一个集合加进去
    3 print(s4)
    4 
    5 #以上运行结果是
    6 {1, '1', '35', 2, '3', '5', 3, '2', '6'}

    8、使用集合练习:校验密码复杂程序;

     1 import  string
     2 nums_set = set(string.digits)#数字集合
     3 upper_set = set(string.ascii_uppercase)#大写字母集合
     4 lower_set =set(string.ascii_lowercase)#小写字母集合
     5 pun =set(string.punctuation)#特殊符号集合
     6 for i in range(5):
     7     pwd = input("请输入密码").strip()
     8     pwd_set = set(pwd)
     9     if pwd_set&nums_set and pwd_set&upper_set and pwd_set&lower_set and pwd_set &pun:
    10         print("密码输入正确",pwd)
    11     else:
    12         print("密码输入不正确,必须包含大小写字母,数字和特殊符号")
  • 相关阅读:
    ffmpeg中的sws_scale算法性能测试
    ffmpeg 新老接口问题及对照集锦
    入门视频采集与处理(显示YUV数据)
    RGB与YUV图像视频格式的相互转换
    ffmpeg视频解码简明教程
    FFmpeg源代码简单分析——sws_getContext()
    FFmpeg解码H264及swscale缩放详解
    我所理解的ThreadLocal
    网络通信Socket模块实现文件传输
    设计一个基于flask的高并发高可用的查询ip的http服务
  • 原文地址:https://www.cnblogs.com/xiehong/p/8746549.html
Copyright © 2011-2022 走看看