• chapter3.2、set集和集合运算


    集set

    约定   set 翻译为集合,collection翻译为集合类型,是一个大概念

    可变,无序,不重复,

    可迭代,不可索引

    定义

    s= {} #特例,定义字典
    s={1,2}
    s1 = set(1,2)

    set的元素要求必须可以hash

    hash(1),hash('a'),hash(1,'a') 散列

    集合,字典,列表,bytearray不可hash

    set不能加,乘

    add 增加   不能add 列表,集合,add是元素存在,什么都不做

    update(*others) #就地修改,合并集合,参数other必须是可迭代对象

    remove 删除,能少用就少用 返回None,不存在就返回KeyError

    discard 移除元素返回None,没有就什么都不做

    pop() -->item 弹出任意元素,空集返回KeyError

    clear()  移除所有元素

    不能修改,不可索引,不能用索引号查询

    遍历 可以迭代所有数据

    in 集合效率快,用空间换时间,O(1)

    lst1=list(range(100))

    lst2=list(range(100000))

    -1 in lst1,-1 in lst2

    set1=set(range(100))
    set1=set(range(100000))

    -1 in set1,-1 in set2

    线性结构的查询时间是O(n),随数据规模增大而增加耗时

    set,dict等结构,内部使用hash值作为key,时间度杂度O(1),查询时间和数据规模无关

     可变的数据结构不可hash,不可变的数据可以hash

    可变的数据结构有列表,集合,字典,bytearray等

    不可变的数据结构有字符串,元组,字节,数值型,布尔型,None等,可hash,hashzble

    集合

    基本概念

    全集 所有元素的集合

    子集subset和超集superset,  集合A所有元素都在另一个集合B内,A是B的子集,B是A的超集

    真子集和真超集  A是B的子集,且A不等于B,A就是B的真子集,B是A的真超集

    并集 多个集合的合并,A和B的元素合并到一起,组成的集合叫并集 

      合并union(*other)  返回多个集合合并后的新集合

      运算符|  等同于union

      update(*other)多个集合合并,就地修改,不返回值
      |=  等同于update

    交集,多个集合的公共部分,属于A且属于B的元素组成的集合

      intersection(*others)

      &  等同于intersection

      intersection_update(*other)

      &=  获取多个集合的并集,就地修改

    差集 属于A且不属于B的元素组成的集合

      difference(*others)  返回和多个集的差集

      -  等同于difference

      difference_update  获取和多个集的差集,就地修改

      -=  等同于difference_update

    对称差集  集合A和B,所有不属于A和B交集的元素组成的集合,记作(A-B)∪(B-A)

      symmetric_difference  返回和另一个集合的差集

      ^  等同于symmetric_difference

      symmetric_difference_update  获取和另一个集合的差集,就地修改

      ^=  等同于symmetric_difference_update

    集合运算

    issubset(other) <= 判断当前集合是否为另一个集合的子集

    set1 < set2  判断set1是否是set2的真子集

    issuperset(other)   判断当前集合是否为另一个集合的超集

    set1 > set2  判断set1是否是set2的真超集

    isdisjoint(other)  当前集合和另一个集合没有交集,没有交集返回True,有返回False

    列表解析式

    n = [random.randint(1,20) for _ in range(10)]  随机产生10个0-20之间的整数

    也可以嵌套

    n=[[random.randint(1,10) for _ in range(10)]for _ in range(2)]  随机产生2组数,每组十个1-10之间的数

  • 相关阅读:
    php 解析富文本编辑器中的hmtl内容,富文本样式正确输出
    thinkphp 中区块block和模板继承extend用法举例
    RabbitMQ安装
    the temporary upload location [/tmp/tomcat.4519862041770988807.8082/work/Tomcat/localhost/ROOT] is not valid
    java.lang.UnsupportedOperationException
    containsAll
    mysql 函数 group_concat 长度限制
    Linux安装jdk8
    nginx实现负载均衡
    linux系统服务器复制文件到另一台服务器上
  • 原文地址:https://www.cnblogs.com/rprp789/p/9471614.html
Copyright © 2020-2023  润新知