zoukankan      html  css  js  c++  java
  • Python全栈day14(集合)

    一,集合

      1,集合由不同元素组成

      2,无序

      3,集合中元素必须是不可变类型

    二,定义集合

      1,s = {1,2,3,4,5}

      2,s = set(hello)以迭代的方式生成集合

    s = set("hello")
    print(s)
    
    {'o', 'e', 'h', 'l'}
    

      

    三,集合的方法

      1,add添加,如果添加有重复不会报错但是也不会添加

    s = {1,2,3}
    s.add(4)
    print(s)
    
    {1, 2, 3, 4}
    

      

      2,clear清除

      3,copy拷贝

    s = {1,2,3}
    s1 = s.copy()
    print(s)
    
    {1,2,3}
    

      

      4,pop删除,因为是无序的所以是随机删除

      5,remove指定删除,如果指定参数没有则报错不存在KeyError

    s = {1,2,3}
    s.remove(1)
    print(s)
    
    {2,3}
    

      

      6,discard和remove功能一样不过是假如没有找到关键字不会报错

    四,集合的运算

      1,并集

      假设有两个列表一个列表列出学习python的学生一个列出学习linux的学生请列出既学习了python的又学习了linux的学生

      通过循环的方法vim day14-2.py

    python_l = ['zhangsan','lisi','wangwu']
    linux_l = ['zhangsan','lisi']
    python_and_linux_l = []
    for p_name in python_l:
        if p_name in linux_l:
            python_and_linux_l.append(p_name)
    print(python_and_linux_l)

    ['zhangsan', 'lisi']

      这种方法比较low下面用集合来处理 vim day14-3.py

    python_l = ['zhangsan','lisi','wangwu']
    linux_l = ['zhangsan','lisi']
    #把列表转换成无序的集合
    p_s = set(python_l)
    l_s = set(linux_l)
    print(p_s.intersection(l_s))

    print(p_s&l_s)

      使用print(p_s&l_s)更加简单

      2,和集

      使用union或者符号

      

      3,差集

      直接使用-号即可,存在于键鼠不存在于被减数中的元素

      p_s - l_s

      4,交叉补集symmetric_difference 符号^ 先合集在减去并集就是交叉补集

    python_l = ['zhangsan','lisi','wangwu']
    linux_l = ['zhangsan','lisi','dage']
    #把列表转换成无序的集合
    p_s = set(python_l)
    l_s = set(linux_l)
    print(p_s.symmetric_difference(l_s))
    

      

      5,difference_update求完差集并更新原集合返回值为None 以下操作相当于p_s = p_s - l_s

    python_l = ['zhangsan','lisi','wangwu']
    linux_l = ['zhangsan','lisi']
    #把列表转换成无序的集合
    p_s = set(python_l)
    l_s = set(linux_l)
    v = p_s.difference_update(l_s)
    print(p_s,v)

    {'wangwu'} None

      

      6,isdisjoint 两个集合没有交集返回True有交集返回False

    s1 = {1,2}
    s2 = {3,4}
    print(s1.isdisjoint(s2))
    
    True
    

      

       7,issubset一个集合是否是另外一个集合的子集 如果是返回True如果不是返回False

    s1 = {1,2}
    s2 = {1,2,3,4}
    print(s1.issubset(s2))
    
    True
    

      

      8,issuperset判断一个集合是否是另外一个集合的父集

      9,update并集并且更新和union不同的是union不会更新

    s1 = {1,2}
    s2 = {1,2,3}
    s1.update(s2)
    print(s1)
    
    {1,2,3}
    

      

     五,集合的补充

      

      1,frozenset定义不可变集合

    s = frozenset('hello')
    print(s)
    
    frozenset({'e', 'h', 'l', 'o'})
    

      2,列表使用集合的方法去重,但是新生成的列表顺序可能和原列表不同

    names = ['zhangsan','zhangsan','lisi']
    names = list(set(names))
    print(names)
    
    ['lisi', 'zhangsan']
    

      

      

  • 相关阅读:
    Windows莫名内存到百分之百,需要修改虚拟内存
    idea中的springboot的maven项目报错Failed to clean project: Failed to delete D: ew_shunyishunyi argetshunyiWEB-INFclassesstatic
    VMware 启动虚拟机黑屏(Ubuntu)
    MySQL 8.0.18安装教程(windows 64位)
    ubunt中,使用命令su命令切换root账户,提示认证失败
    AngularJS 杂项知识点
    AngularJS $watch 性能杀手
    AngularJS controller as vm方式
    AngularJS 路由 resolve属性
    AngularJS $observe $watch
  • 原文地址:https://www.cnblogs.com/minseo/p/8126992.html
Copyright © 2011-2022 走看看