zoukankan      html  css  js  c++  java
  • 集合 set

    集合

    集合属于可变数据类型,但它的内容必须是不可变数据类型。

    特点:无序   ,  不重复  

    有两种创建方式:

    set({1,2,3})和 {1,2,3}

    set1 = set({1,2,3,4})
    set2 = {1,2,3,4}
    print(type(set1),type(set2))

    结果为:

    <class 'set'> <class 'set'>

    集合的操作方法

    增:

    (1)add   将元素随机添加到集合中(无序)若即将添加的元素集合内已经存在,则不做改变

    set1 = {1,2,3,4}
    set1.add("aires")
    print(set1)

    结果为:

    {1, 2, 3, 4, 'aires'}

    (2)update  将元素迭代式的、无序的,随机添加到集合中

    set1 = {1,2,3,4}
    set1.update(["dires","mike","dafafafa","lock",456])
    print(set1)

    结果为:

    {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'}

    (1)pop 随机删除,有返回值

    set1 = {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'}
    set1.pop()
    print(set1)

    结果为:

    {1, 2, 3, 4, 'lock', 456, 'mike', 'dafafafa'}

    (2)remove  按元素去删,但若集合中没有要删除的元素则会报错

    set1 = {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'}
    set1.remove("dafafafa")
    print(set1)

    结果为:

    {1, 2, 3, 4, 'lock', 'mike', 456, 'dires'}

    (3)clear  清空集合

    set1 = {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'}
    set1.clear()
    print(set1)

    结果为:

    set()

    (4)del 删除集合

    set1 = {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'}
    del set1
    print(set1)

    结果为:因为已删除,所以报错

    for in 循环打印

    set1 = {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'}
    for i in set1:
        print(i)

    结果为:

    1
    2
    3
    4
    456
    dafafafa
    dires
    lock
    mike

    其他操作

    交集:&  或者 intersection   打印或返回两个集合共有的元素

    set1 = {1,  2, 3, 4, 456}
    set2 = {4,5,6,7, 456}
    print(set1&set2)
    print(set1.intersection(set2))

    结果为:

    {456, 4}
    {456, 4}

    反交集: ^ 或者 symmetric_difference  打印或返回两个集合不共有的元素

    set1 = {1,  2, 3, 4, 456}
    set2 = {4,5,6,7, 456}
    print(set1^set2)
    print(set1.symmetric_difference(set2))

    结果为:

    {1, 2, 3, 5, 6, 7}
    {1, 2, 3, 5, 6, 7}

    并集:|或union  将两个集合合并去重   和增加方法中的update差不多

    set1 = {1,  2, 3, 4, 456}
    set2 = {4,5,6,7, 456}
    print(set1|set2)
    print(set1.union(set2))

    结果为:

    {1, 2, 3, 4, 5, 6, 7, 456}
    {1, 2, 3, 4, 5, 6, 7, 456}

    差集: -或 difference   集合1减去集合2中的相同元素

    set1 = {1,  2, 3, 4, 456}
    set2 = {4,5,6,7, 456}
    print(set2-set1)
    print(set1.difference(set2))

    结果为:

    {5, 6, 7}
    {1, 2, 3}

    超集: >或issuperset   检测集合1是否为集合2的超集    若集合1的元素包含了集合2的所有元素 那么集合1便是集合2的超集  返回的是布尔值

    若相同那么集合1就是集合2的超集

    set1 = {1,  2, 3, 4, 456}
    set2 = {4, 456}
    print(set1>set2)
    print(set1.issuperset(set2))

    结果为:

    True
    True

    子集:<或issubset   与超集相反 同样返回布尔值

    set1 = {1,  2, 3, 4, 456}
    set2 = {4, 456}
    print(set2<set1)
    print(set2.issubset(set1))

    结果为:

    True
    True

    frozenset不可变集合,让集合变成不可变类型   数据类型为frozenset

    print(frozenset("aires"),type(frozenset("aires")))

    结果为:

    frozenset({'e', 'r', 'i', 's', 'a'}) <class 'frozenset'>

      

    后人发,先人至。扎实的基础可以更快的铸就高楼大厦!
  • 相关阅读:
    CodeForces 659F Polycarp and Hay
    CodeForces 713C Sonya and Problem Wihtout a Legend
    CodeForces 712D Memory and Scores
    CodeForces 689E Mike and Geometry Problem
    CodeForces 675D Tree Construction
    CodeForces 671A Recycling Bottles
    CodeForces 667C Reberland Linguistics
    CodeForces 672D Robin Hood
    CodeForces 675E Trains and Statistic
    CodeForces 676D Theseus and labyrinth
  • 原文地址:https://www.cnblogs.com/aries-zhang/p/10342728.html
Copyright © 2011-2022 走看看