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'>

      

    后人发,先人至。扎实的基础可以更快的铸就高楼大厦!
  • 相关阅读:
    『设计模式』再谈麦当劳的点单模式--命令模式(Command)
    『设计模式』备忘录模式(memento)下象棋,我就想悔棋怎么办
    『设计模式』职责链模式(Chain of Responsibility) 可怜的加薪、请假之路
    『设计模式』状态模式(不起花里胡哨的名字了)
    『设计模式』外观模式--这篇博客也太明了吧
    『设计模式』电话接线员与中介者模式
    『安卓』安卓开发基础--基本控件
    『设计模式』再谈Macdonald的汉堡口味--策略模式
    hive启动报错:Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgumen
    hive安装报错:Class path contains multiple SLF4J bindings
  • 原文地址:https://www.cnblogs.com/aries-zhang/p/10342728.html
Copyright © 2011-2022 走看看