• day12-集合


    集合

    1、什么是集合

    set(集合)是一个无序不重复元素的数据集,与列表的区别
    1、无序的,不可以使用索引进行顺序的访问
    2、不能够有重复的数据。

    项目开发中,集合主要用在数据元素的去重和测试是否存在。
    集合还支持一些数学上的运算,例如:intersection(交集),union(并集),difference(差集)和 symmetric_difference(对称差集)。

    2、创建集合

    创建集合的方法比较简单,使用大括号或者 set 函数,需要注意空的集合不能够使用 {} 创建,只能使用 set 函数,因为{} 创建的是一个空的字典 :
    courses = set() #创建一个空集合
    courses = {'Linux', 'C++', 'Vim', 'Linux'}
    print(courses)
    {'Linux', 'Vim', 'C++'}
    上面的代码示例中可以看到,多余的 Linux 字符串已经被自动去除。

    集合还可以直接由字符串与 set 函数进行创建,会将字符串拆散为不同的字符,并去除重复的字符:
    与大括号的效果不同,大括号不会将字符串拆散
    str = {'hello'}
    print(str)
    结果为{'hello'}

    str = set('hello')
    print(str)
    结果为{'h', 'l', 'o', 'e'}

    3、集合操作

    3.1 add()向集合中增加元素且只能一次添加一个元素,如果元素已经存在则不进行操作
    a = {1,2,3,4}
    a.add('hello')
    print(a)
    {1, 2, 3, 4, 'hello'}

    3.2 update()也可以添加元素,且参数可以是列表,元组,字典等
    a = {1,2,3,4}
    a.update('a','b',[10,11,'c','d'])
    print(a)
    {1, 2, 3, 4, 'a', 'd', 10, 11, 'c', 'b'}

    3.3 remove() 从集合中删除元素,如果元素不存在则抛出 KeyError 异常:
    a = {1,2,3,4}
    a.remove(1)
    print(a)
    {2, 3, 4}

    3.4 discard()移除集合中的元素,且如果元素不存在,不会发生错误。
    a = {1,2,3,4}
    a.discard(10)
    print(a)
    {1,2, 3, 4}

    3.5 pop()随机删除集合中的一个元素,语法格式如下:
    a = {1,2,3,4}
    a.pop()
    print(a)
    {2, 3, 4}

    3.6 len()计算集合元素个数
    print(len(a))
    4

    3.7 clear()清空集合
    a = {1,2,3,4}
    print(a.clear())
    None

    3.8 copy()拷贝集合
    a = {1,2,3,4}
    b = a.copy()
    print(b)
    {1, 2, 3, 4}

    3.9 isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
    a = {1,2,3,4}
    b = {3,4,5,6}
    print(a.isdisjoint(b))
    False

    3.10 issubset() 判断a集合是否为b集合的子集。
    a = {1,2,3,4}
    b = {3,4,5,6}
    print(a.issubset(b))
    False

    3.11 issuperset() 判断a集合是否是b集合的父集
    a = {1,2,3,4}
    b = {3,4,5,6}
    print(a.issuperset(b))
    False

    3.12 in判断是否存在
    a = {1,2,3,4}
    print(1 in a)
    True
    print('1' not in a)
    True
    注意 not in 是一个判断 Python 是否不在集合中的操作。in 操作也适用于列表和元组。

    4、两个集合的运算

    a = {1,2,3,4}
    b = {3,4,5,6}

    4.1、& 交集,返回既在a又在b的元素,等效于intersection操作:
    print(a & b)
    print(a.intersection(b))
    {3, 4}
    a.intersection_update(b) #相当于a = a.intersection(b),将a与b的交集赋值给a
    print(a,b)
    {3, 4} {3, 4, 5, 6}


    4.2、'|' 并集,存在a中或b中的元素,等效于 union 操作:
    print(a | b)
    print(a.union(b))
    {1, 2, 3, 4, 5, 6}
    并没有a.union_update(b)这个方法

    4.3、- 差集,返回在a不在b的元素,等效于difference操作:
    print(a - b)
    print(a.difference(b))
    {1, 2}
    a.difference_update(b) #相当于a = a.difference(b),将a与b的差集赋值给a
    print(a,b)
    {1, 2} {3, 4, 5, 6}

    4.4、^ 对称差集,返回只存在a或b集合中的元素,等效于symmertic_difference操作:
    print(a ^ b)
    print(a.symmetric_difference(b))
    {1, 2, 5, 6}
    a.symmetric_difference_update(b) #相当于a = a.symmetric_difference(b),将a与b的对称差集赋值给a
    print(a,b)
    {1, 2, 5, 6} {3, 4, 5, 6}

    5、set不能创建数字集合,要创建数字集合只能用大括号

    c = {1234,5678}
    print(c)
    {1234, 5678} 大括号是将每个数字当成一个元素

    d = set(5678)
    print(d)
    TypeError: 'int' object is not iterable

    e = set('1234')
    print(e)
    {'1', '4', '3', '2'} set将元素拆分

    也不能写成
    f = set('1234','5678')
    print(f)
    TypeError: set expected at most 1 arguments, got 2

  • 相关阅读:
    wustctf2020_name_your_dog
    wdb2018_guess(stack smash,__environ获取栈变量)
    ciscn_2019_en_3
    植物大战僵尸逆向(秒杀僵尸)
    pwnable_hacknote
    pwn-hitcontraining_magicheap(unsorted bin attack)
    pwn-[XMAN]level5(通用gadget,mprotect)
    pwn-pwnable_orw(seccomp&orw)
    《心流》有感
    LC112 路径总和
  • 原文地址:https://www.cnblogs.com/dxnui119/p/9849252.html
Copyright © 2020-2023  润新知