• (四)集合


    集合三要素

    无序 

    去重(必须是不同元素) 

    元素可hash(必须是不可变类型:数字,字符串,元组)


    集合基本操作

    其他数据类型转换为集合(会自动去重)

    s = set('hello')
    print(s)
    
    s = set(['aa', 'bb', 'cc','aa'])
    print(s)

    结果:{'l', 'e', 'o', 'h'}
       {'aa', 'bb', 'cc'}

    添加元素set.add(一个元素,已经有的元素无法添加,但不报错)

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

    结果:{1, 2, 3, 4, 5, 6, '3'}
       {1, 2, 3, 4, 5, 6, '3'}

    添加元素set.update(多个元素,参数只要是可迭代类型)

    s2={1,2,3}
    s2.update([1,3,5,7])
    print(s2)

    结果:{1, 2, 3, 5, 7}

    删除元素:三种不同的方式

    ①随机删除 set.pop()

    ②指定元素删除,不存在会报错 set.remove('hello')

    ③指定元素删除,不存在不会报错 set.discard('hello')

    ④清空集合 set.clear(),有别于删除集合

     


    集合关系运算

    求交集 : s1.intersection(s2)或s1&s2

    求并集 : s1.union(s2)或s1|s2

    求差集 : s1.difference(s2)或s1-s2(s1有的而s2没有)

    求交叉补集 : s1.symmetric_difference(s2)或s1^s2(并集 - 交集)

    s1.isdisjoint(s2):s1和s2是不是没有交集,是的话返回False

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

    结果:False

    s1.issubset(s2) : s1是不是s2的子集,是的话返回Ture

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

    结果:True False

    s1.issuperset(s2) : s1是不是s2的父集,是的话返回Ture


    list利用集合去重

    li = ['aa','bb','cc','bb']
    li = list(set(li))
    print(li)

    结果:['aa', 'bb', 'cc']

    总结:

    集合是一个无序的,不重复的数据组合,它有两个主要的用途:

    1.去重,把一个列表变成集合,就自动去重了

    2.关系测试,测试两组数据之间的交集、差集、并集等关系

  • 相关阅读:
    Wiki开源软件 介绍
    实时股票获取API
    .net 下动态加载自定义控件后传值及函数调用方法
    vim(gvim)相关插件整理
    CPPUnit 测试宏
    .bash_profile和.bashrc
    Linux下SSH配合SecureCRT的密匙完美使用方法(图)
    Windows下编译gdal使其支持proj
    收藏:解析#pragma指令
    Windows 2003中打开DirectX加速
  • 原文地址:https://www.cnblogs.com/xulan0922/p/9111731.html
Copyright © 2020-2023  润新知