zoukankan      html  css  js  c++  java
  • 集合函数内置方法(set)

    一、集合类型内置方法(set)

    一、集合:

    集合可以理解成一个集合体,学习Python的学生可以是一个集合体;学习Linux的学生可以是一个集合体。

    pythoners = ['jason', 'nick', 'tank', 'sean']
    linuxers = ['nick', 'egon', 'kevin']
    py_li_list = []
    for stu in pythoners:    
        if stu in linuxers:       
            py_li_list.append(stu)   #如果重合,则把重合的这个元素加入定义的这个中
    print(py_li_list)
    

    ['nick']

    上述的列表方式求两个集合体的关系运算非常复杂,因此有了我们的集合数据类型。

    二、作用

    ​ 用于关系运算的集合体,由于集合内的元素无序且集合元素不可重复,因此集合可以去重,但是去重后的集合会打乱原来元素的顺序。

    三、定义

    ​ {}内用逗号分隔开多个元素,每个元素必须是不可变类型。

    s = {1, 2, 1, 'a', 'a', 'c'}
    print(s)
    

    ​ {'c', 1, 2, 'a'} #去重:重复的全部去掉 #乱序:顺序是乱的

    直接定义:s = {}' #空的大括号是字典,而非集合,定义集合必须要用set()

    四、内置方法

    • 重要的有

    1.长度

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    print(len(s))
    

    5 #实际长度按照去重过后来计算

    2.成员运算符

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    print(1 in s)
    print(1 not in s)
    

    True
    False

    3.|并集 union()

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    s2 = {2,3,3,6,7,8}
    print(s | s2)
    print(s.union(s2))
    

    {'a', 1, 2, 3, 6, 7, 'c', 8, '4'}

    {'a', 1, 2, 3, 6, 7, 'c', 8, '4'}

    4.&交集 intersection()

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    s2 = {2,3,3,6,7,8}
    print(s & s2)
    print(s.intersection(s2))
    

    {2}
    {2}

    5.-差集difference()

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    s2 = {2,3,3,6,7,8}
    print(s - s2)
    print(s.difference(s2))
    

    {1, 'a', '4', 'c'}
    {1, 'a', '4', 'c'}

    6.^对称差集symmetric_difference

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    s2 = {2,3,3,6,7,8}
    print(s ^ s2)
    print(s.symmetric_difference(s2))
    

    {1, 3, 6, 7, 8, 'c', '4', 'a'}
    {1, 3, 6, 7, 8, 'c', '4', 'a'}

    • 了解的是

    1.copy()

    1.s = {1, 2, 1, 'a', 'a', 'c','4'}
    # s.copy()
    # print(s)          # 可以一次性输出,也可以赋值输出
    print(s.copy())
    

    {'a', 1, 2, '4', 'c'} #他会去重。乱序后输出

    2.update() 更新;校正 (针对于对两个集合之间的改变)

    update() 方法用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    s2 = {2,3,3,6,7,8}
    print(s.update(s2))      
    #在原有的s集合基础上添加集合s2,并没有返回值。故返回为None
    s.update(s2)
    print(s)
    

    None
    {1, 2, 3, 6, 7, 8, 'a', 'c', '4'}

    3.clear() ¥清空。没有返回值

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    s.clear()
    print(s)
    

    set() #输出的结果是一个空集合

    4.pop() (随机删除)

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    s.pop()   #随机删除
    print(s)
    

    {2, '4', 'c', 'a'}

    5.remove() :删除 (找不到要删除的元素就会报错)

    #如果在集合中找不到要删除的元素则会报错
    s = {1, 2, 1, 'a', 'a', 'c','4'}
    s.remove('a')
    print(s)
    

    {1, 2, 'c', '4'}

    6.discard():删除 (找不到要删除的元素不会报错,就会不执行删除操作)

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    s.discard('a')
    print(s)
    

    {1, 'c', 2, '4'}

    7.add() (增加元素,注意只能一个一个添加,不能一次添加多个)

    s = {1, 2, 1, 'a', 'a', 'c','4'}
    s.add(9)
    print(s)
    

    {1, 2, 9, 'a', 'c', '4'}

    8.difference_update() (difference_update() 方法用于在第一个集合中移除这一二两个集合共有的元素。)

    s = {1,2,1, 'a', 'a', 'c','4'}
    s2 = {2,3,3,6,7,8}
    s.difference_update(s2)
    print(s)
    print(s2)
    

    {1, 'a', '4', 'c'} s有和s2一样的元素的已经被删掉
    {2, 3, 6, 7, 8} s2没有什么变化

    9.子集issubset()

    s = {1,2,1}
    s2 = {1,2,3,3,6,7,8}
    s = s.issubset(s2)    #s是s2的子集
    print(s)
    

    True

    10.父集 issuperset()

    s = {1,2,3, 'a', 'a', 'c','4'}
    s2 = {2,3}
    s = s.issuperset(s2)     #s shis2的父集
    print(s)
    

    True

    五、 有一个值还是多个值

    多个值

    六、 有序(索引)or无序(索引)

    无序

    七、可变or不可变

    可变

    s = {1,2,2,5,8,}
    print(id(s))
    s.add(9)
    print(s)
    print(id(s))
    

    2853886071528
    {1, 2, 5, 8, 9}
    2853886071528

    增加元素前后,集合的id不变,所以是可变类型

  • 相关阅读:
    BZOJ 1088 模拟(扫雷经验…)
    BZOJ 1529
    BZOJ 3224
    BZOJ 1192
    BZOJ 1012
    博客搬家说明
    BZOJ 2423 DP
    BZOJ 1789&1830 推式子 乱搞
    BZOJ 1588
    拆点:虫洞
  • 原文地址:https://www.cnblogs.com/wwbplus/p/11321965.html
Copyright © 2011-2022 走看看