zoukankan      html  css  js  c++  java
  • Python

    集合的简介

    • 集合是一个无序、不重复的序列
    • 它的基本用法包括成员检测和消除重复元素
    • 集合对象也支持像 联合,交集,差集,对称差分等数学运算
    • 集合中所有的元素放在 {} 中间,并用逗号分开

    集合的栗子

    这里会有个重点知识

    # 声明
    basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
    print(basket)
    
    set_ = {1, 1, 1, 1, 2}
    print(set_)
    
    
    # 输出结果
    {'orange', 'pear', 'banana', 'apple'}
    {1, 2}

    自动去重了,每个元素只保留一个,且是无序的

    再来看一个栗子

    set_ = {{1, }, {1, }}
    print(set_)
    
    set_ = {[1, ], [2, ]}
    print(set_)
    
    
    # 输出结果
        set_ = {{1, }, {1, }}
    TypeError: unhashable type: 'set'
    
    
        set_ = {[1, ], [2, ]}
    TypeError: unhashable type: 'list'

    为什么报错?

    重点:因为 set 集合只能包含不可变对象元素,而列表、集合本身都是可变对象,所以会报错

    集合和列表的区别

    • 列表中的元素允许重复,集合中的元素不允许重复
    • 列表是有序的,提供了索引操作,集合是无序的,没有索引操作
    set_ = {1, 1, 1, 1, 2}
    set[1]
    
    
    # 输出结果
        set[1]
    TypeError: 'type' object is not subscriptable

    提示该类型不能下标

    特殊集合

    如何创建一个空集合

    set_ = {}
    print(set_, type(set_))
    
    # 输出结果 {} <class 'dict'>

    不可以直接 { },这样默认是一个空字典哦

    正确写法

    set_ = set()
    print(set_, type(set_))
    
    
    # 输出结果
    set() <class 'set'>

    常见运算操作

    运算符 |

    合并多个集合

    >>> {1, 2} | {3, 4}
    {1, 2, 3, 4}
    >>> {1, 2} | {3, 4} | {5, 6}
    {1, 2, 3, 4, 5, 6}

    运算符 -

    从集合中删除元素

    >>> {1, 2, 3, 4} - {3, 4, 5, 6}
    {1, 2}

    运算符 & 

    取交集,返回两个集合都包含的元素

    >>> {1, 2, 3} & {3, 4, 5}
    {3}

    运算符 ^

    取差集

    >>> {1, 2, 3} ^ {3, 4, 5}
    {1, 2, 4, 5}

    关键字 in

    检查集合中是否包含指定元素

    >>> 'polo' in {'www', 'polo', 'com'}
    True
    >>> 'yy' in {'www', 'yyy', 'com'}
    False

    常见函数

    len(set) 

    获取集合的长度

    >>> len({1, 2, 3})
    3
    >>> len({1, 2, 3, 4})
    4

    max(set) 

    获取集合中最大的元素

    >>> max({1, 2})
    2
    >>> max({1, 3, 2})
    3

    min(set) 

    获取集合中最小的元素

    >>> min({1, 2})
    1
    >>> min({1, 3, 2})
    1

    集合常见方法

    add(item) 

    向集合中新增一个元素 item

    # add
    set_ = {1, 2, 3}
    set_.add(1)
    set_.add(4)
    set_.add("5")
    print(set_)
    
    
    # 输出结果
    {1, 2, 3, 4, '5'}

    remove(item)

    从集合中删除指定元素 item

    # remove
    set_ = {1, 2, 3}
    set_.remove(2)
    print(set_)
    
    
    # 输出结果
    {1, 3}

    clear()

    移除集合中的所有元素

    # remove
    set_ = {1, 2, 3}
    print(set_)
    set_.clear()
    print(set_)
    
    
    # 输出结果
    {1, 2, 3}
    set()

    pop()

    移除集合首位元素,并返回该元素值

    # pop
    a = {1, 2, 3, 4}
    print(a.pop())
    print(a.pop())
    print(a)
    
    
    # 输出结果
    1
    2
    {3, 4}

    difference()

    从源集合中找出目标集合中没有的元素集合

    # difference
    a = {1, 2, 3, 4}
    b = {2, 3, 5}
    print(a.difference(b))
    
    
    # 输出结果
    {1, 4}

      

    union()

    返回两个集合的并集

    # union
    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    print(set1.union(set2))
    
    
    # 输出结果
    {1, 2, 3, 4, 5}

    intersection()

    返回两个集合的交集

    # intersection
    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    print(set1.intersection(set2))
    
    
    # 输出结果
    {3}

    issubset() 

    判断指定集合是否为子集

    # issubset
    set1 = {1, 2}
    set2 = {1, 2, 3}
    print(set1.issubset(set2))
    
    
    # 输出结果
    True

    issuperset()

    判断指定集合是否为超集

    # issuperset
    set1 = {1, 2, 3}
    set2 = {1, 2}
    print(set1.issuperset(set2))
    
    
    # 输出结果
    True

    集合总结

    因为集合是不可重复的,所以可以利用它来处理一些需要避免重复插入的场景,比如为了避免某一学生的信息重复录入

  • 相关阅读:
    JVM 关于对象分配在堆、栈、TLAB的理解
    分布式唯一 ID 生成方案有哪些?
    JVM 栈帧之操作数栈与局部变量表 转
    C# TreeHelper帮助类
    Java:Top K问题的解法
    C#单例模式
    C#分组方式比较
    Vue实现登录
    git使用总结
    js实现无色彩球
  • 原文地址:https://www.cnblogs.com/poloyy/p/15083079.html
Copyright © 2011-2022 走看看