zoukankan      html  css  js  c++  java
  • python基础数据类型集合(set)

    python基础数据类型--集合(set)

    集合是一个数学概念由一个或多个确定的元素所构成的整体叫做集合

    集合中的三个特征

    1.确定性(元素必须死可hash)

    2.互异性(去重)

    3.无序性(集合中的元素没有先后之分)如集合{1,2,3}和集合{2,3,1}算作一个集合

    注意  集合存在的意义就是去重和关系运算

    一、集合的创建

    set1 = {1,2,3}

    set2 = set({1,2,3})

    单个元素的增加add(),     add的作用相当于列表中的append

    序列的增加:update(),    update类似于extend方法,update方法可以支持同时传入多个参数

    a = {1,2}
    a.update([3,4],[1,2,7])   #迭代加  去重
    >>>>a
    {1, 2, 3, 4, 7}

    a.update('hello')    #迭代加
    >>>>a
    {1, 2, 3, 4, 7, 'h', 'o', 'e', 'l'}

    a.add('hello') #追加
    >>>a
    {1, 2, 3, 4, 7, 'h', 'o', 'hello', 'e', 'l'}

      

    删除

    集合删除单个元素有两种方法:

    元素不在原集合里

    set.discard(x)  不会抛出异常

    set.remove(x)  会抛出keyError错误

    a = {1,2,3,4}
    
    a.discard(1)
    print(a)
    a.discard(1)   #不会报错
    print(a)
    a.remove(1)   #报错
    print(a)
    
    
    >>>>
    
    {2, 3, 4}
    {2, 3, 4}
    Traceback (most recent call last):
      File "D:/untitled/假期/2018-2-9/基础知识五--集合.py", line 19, in <module>
        a.remove(1)
    KeyError: 1
    

    pop():由于集合是无序的,pop返回的结果不能确定,且当集合为空时调用pop会抛出KeyError错误,

    clear(): 清空集合

    a = {3,'a',2.1,1}
    a.pop()
    a.pop()    #删除是无序的
    a.clear()  #清空 
    print(a)
    a.pop()    #报错
    print(a)
    
    
    
    >>>>
    set()
    Traceback (most recent call last):
      File "D:/untitled/假期/2018-2-9/基础知识五--集合.py", line 28, in <module>
        a.pop()
    KeyError: 'pop from an empty set'
    

    查  

    只能用for循环

    for i in set1:
        print(i)
    

    集合的运算

    # ①交集
    set1 = {'a', 'b', 'c', 'd', '1', '4'}
    set2 = {'1', '2', '3', '4', 'b', 'c'}
    print(set1 & set2)
    >>> {'c', '4', '1', 'b'}
    print(set1.intersection(set2))
    >>> {'c', '4', '1', 'b'}
    
    # ②反交集
    set1 = {'a', 'b', 'c', 'd', '1', '4'}
    set2 = {'1', '2', '3', '4', 'b', 'c'}
    print(set1 ^ set2)
    >>> {'d', '2', 'a', '3'}
    print(set1.symmetric_difference(set2))
    >>> {'d', '2', 'a', '3'}
    
    # ③并集
    set1 = {'a', 'b', 'c', 'd', '1', '4'}
    set2 = {'1', '2', '3', '4', 'b', 'c'}
    print(set1 | set2)
    >>> {'1', 'b', '2', '3', 'c', 'd', '4', 'a'}
    print(set1.union(set2))
    >>> {'1', 'b', '2', '3', 'c', 'd', '4', 'a'}
    
    # ④差集
    set1 = {'a', 'b', 'c', 'd', '1', '4'}
    set2 = {'1', '2', '3', '4', 'b', 'c'}
    print(set1 - set2)
    >>> {'d', 'a'}
    print(set1.difference(set2))
    >>> {'d', 'a'}
    
    print(set2 - set1)
    >>> {'2', '3'}
    print(set2.difference(set1))
    >>> {'2', '3'}
    
    # ⑤子集与超集
    set1 = {'A','B','C','a','b','c'}
    set2 = {'A','B','C'}
    print(set2 < set1)
    >>> True
    print(set2.issubset(set1))
    >>> True
    
    print(set1 > set2)
    >>> True
    print(set1.issuperset(set2))
    >>> True
    

      

    不可变集合

    # 不可变集合
    set_frozen = frozenset({'A', 'B', 'C'})
    print(set_frozen)
    >>> frozenset({'C', 'B', 'A'})
    
  • 相关阅读:
    【转】JMeter学习 参数化User Defined Variables与User Parameters
    【转】 JMeter学习(三十七)Jmeter录制手机app脚本
    【转】JMeter学习(三十五)使用jmeter来发送json/gzip格式数据
    vue axios配置element loading
    D3 JS 实现可视化
    Axios 封装
    Axios和.Net Core 跨域配置(当后台启用windows验证的情况)
    svg绘制圆形数据分布图
    svg 折线鼠标绘制
    svg 圆形标签数据分布
  • 原文地址:https://www.cnblogs.com/a438842265/p/8463837.html
Copyright © 2011-2022 走看看