zoukankan      html  css  js  c++  java
  • python 的集合

    set  的特点: 把不同的元素组合在一起,元素值必须是可哈希不可变的 

    set 的创建

    s = set ('alex li')
    print(s)
    
    表现形式;去重   
    {'e', 'i', ' ', 'l', 'a', 'x'}
    

    set集合去重

    sy = ['cx','chenxi','cx']
    print(sy)
    print(set(sy))
    
    
    ['cx', 'chenxi', 'cx']
    {'chenxi', 'cx'}
    

      set 去重并查看数据类型

    sy = ['cx','chenxi','cx']
    print(sy)
    print(set(sy),type(set(sy)))
    
    
    
    
    {'i', 'a', 'e', 'x', ' ', 'l'}
    ['cx', 'chenxi', 'cx']
    {'chenxi', 'cx'} <class 'set'>
    

      set 把不同的元素组合到一起,但元素的值必须不能变化

    li = [[1,2],3,'tyuio']
    a = set(li)
    print(a)
    
    
    
    Traceback (most recent call last):
      File "D:/python/map.py", line 308, in <module>
        a = set(li)
    TypeError: unhashable type: 'list'
    

      set集合分为可变集合和非可变集合;创建方式

    s1 = set('alvin')   # 可变
    
    s2 = frozenset('yuan')   #不可变
    print(s1,type(s1))
    print(s2,type(s2))
    
    
    
    测试
    {'i', 'v', 'l', 'a', 'n'} <class 'set'>
    frozenset({'n', 'y', 'u', 'a'}) <class 'frozenset'>
    

      集合的访问与判断集合里是否存在某元素

    s1 =set('alvin')
    print('a' in s1)    #判断a元素是否在集合里存在;存在为Ture,不存在False
    print('b' in s1)
    for i in s1:
        print(i)
    
    
    
    
    True
    False
    a
    l
    n
    i
    v
    

      集合里添加单个元素

    def df():   #查看元素内容的函数
        # print('a' in s1)  # 判断a元素是否在集合里存在;存在为Ture,不存在False
        # print('b' in s1)
        print("********************************")
        for i in s1:
            print(i)
        print('
    ---------
    ')
    
    a =[1,5,2,"wertayuio",6,5]
    s1 =set(a)
    df()
    s1.add("wsd")   #在元素里添加一个元素
    df()
    
    
    
    False
    False
    ********************************
    1
    2
    wertayuio
    5
    6
    ---------
    False
    False
    ********************************
    1
    wertayuio
    5
    6
    ---------
    

      更新(添加多个元素)元素

    s1.update("ops2") #作为一个序列添元素,如果重复只添加一个
    df()
    1
    2
    5
    6
    wertayuio
    ---------
    
    1
    2
    5
    6
    p
    wertayuio
    o
    s
    2
    ---------
    

      更新(添加多个元素)元素

    s1.update([12,'wwww'])  #如果列表只更新添加两个
    df()
    
    
    
    
    
    测试
    D:pythpython.exe D:/python/map.py
    wertayuio
    1
    2
    5
    6
    ---------
    
    wertayuio
    1
    2
    5
    6
    12
    wwww
    ---------
    

      删除集合指定元素操作

    s1.remove(2) #删除指定的元素操作
    df()
    
    
    
    1
    2
    5
    6
    wertayuio
    ---------
    
    1
    5
    6
    wertayuio
    ---------
    

      随机删除操作

    print(s1)
    s1.pop()
    print(s1)
    
    
    
    测试
    {1, 2, 5, 6, 'wertayuio'}
    {2, 5, 6, 'wertayuio'}
    

      清空集合内容

    print(s1)
    s1.clear()  #清空
    print(s1)
    
    {1, 2, 'wertayuio', 5, 6}
    set()
    

      判断两个集合是否相同

    s = set("chenxi")
    s1 = set("chenxixi")
    print(s==s1)   #判断两个集合是否相等,相等为True
    
    
    
    
    True
    

      判断集合1是否被集合2 包含

    print(set("qwert")<set("qwertyuiop"))  #判断后者集合是否包含前者
    
    
    
    True
    

      集合and与or

    print(set("12345") or set("567890"))  #打印前面的set集合
    print(set("12345") and set("567890")) # 打印后面的集合
    
    
    
    {'2', '4', '5', '1', '3'}
    {'8', '0', '5', '6', '9', '7'}
    

      集合的交集与并集

    s1 = set("123456")
    s2 = set("456789")
    print(s2.intersection(s1))  #取交集;两个集合共有的元素
    print(s2.union(s1)) #取并集,指示取两个集合全部的元素并去重
    print(s1 | s2)  #求并集的另一方法

    {'5', '4', '6'}
    {'7', '8', '5', '3', '2', '4', '1', '9', '6'}

    {'7', '8', '5', '3', '2', '4', '1', '9', '6'}

      取集合的差集

    s1 = set("123456")
    s2 = set("456789")
    
    print(s2.difference(s1)) #取s2里有的,s1里没有的元素
    
    print(s1.difference(s2))  # 取s1里有的,s2里没有的元素
    print(s1.symmetric_difference(s2)) #取对称差集
    {'7', '8', '9'}
    {'1', '3', '2'}
    {'7', '1', '9', '2', '8', '3'}

      

      

    草都可以从石头缝隙中长出来更可况你呢
  • 相关阅读:
    Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
    用Recycle()方法对Java对象的重要性
    Lotus中千奇百怪的 $$
    Developing a simple application using steps "User Decision" and "Mail"(1) 沧海
    沟通中的情绪管理(演讲稿) 沧海
    人只有在压力之下,才可能成功,没做一件事,都必须成功,不许言败 沧海
    什么是IDOC,以及IDOC的步骤 沧海
    VS2008 Professional Edition CHS中的deffactory.dat读取错误 沧海
    Including custom text in the step "User Decision" 沧海
    SAP Upgrade Strategy 沧海
  • 原文地址:https://www.cnblogs.com/rdchenxi/p/12036967.html
Copyright © 2011-2022 走看看