• Python-集合


    集合的定义:

       集合成为set和其他语言类似,是一个无序不重复的元素集。

       功能包括:关系的测试、消除重复的元素;集合还支持 交集、并集、差集、对称差集

       备注:由于集合是无序的,所以不支持 索引、分片和其它序列的操作

    下面我们来做一下实操:

       定义一个集合

    #集合
    s = {3,2,5,8,9}            #直接定义
    s1 = set([1,3,4,6,7])      #用set函数来定义
    print(s)
    print(s1)
    输出:
    C:Python35python.exe D:/linux/python/all_test/总练习.py
    {8, 9, 2, 3, 5}                       #集合的无序
    {1, 3, 4, 6, 7}

      集合的操作

    #集合
    s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
    s1 = set([1,3,4,6,7])      #用set函数来定义
    s.add(10)                  #添加一个集合元素
    print(s)
    print(s1)
    # 输出:
    # C:Python35python.exe D:/linux/python/all_test/总练习.py
    # {2, 3, 5, 8, 9, 10}     #这里我们可以看出添加了一个10的元素并去重了
    # {1, 3, 4, 6, 7}
    s3 = frozenset(s1)      #使用此函数是把集合s1封闭了并赋值给s3
    print(s3)
    s3.aad(10)print(s3)
    # 输出:
    # {1, 3, 4, 6, 7}
    # Traceback (most recent call last):
    # frozenset({1, 3, 4, 6, 7})
    #   File "D:/linux/python/all_test/总练习.py", line 25, in <module>
    #     s3.aad(10)
    # AttributeError: 'frozenset' object has no attribute 'aad'   #这里提示不能添加,因为s3封闭了
    print(s)
    s.update([11,12])    #一次性增加两个元素
    print(s)
    # 输出:
    # C:Python35python.exe D:/linux/python/all_test/总练习.py
    # {2, 3, 5, 8, 9, 10}
    # {1, 3, 4, 6, 7}
    # frozenset({1, 3, 4, 6, 7})
    # {2, 3, 5, 8, 9, 10}
    # {2, 3, 5, 8, 9, 10, 11, 12}     #一次性增加了两个元素

    集合的元素删除

    s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
    print(s)
    s.remove(5)   #删除一个集合元素
    print(s)
    # 输出:
    # C:Python35python.exe D:/linux/python/all_test/总练习.py
    # {8, 9, 2, 3, 5}
    # {8, 9, 2, 3}    #我们可以看出少了5元素

    集合的长度

    #集合
    s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
    print(len(s))       #备注会自动去掉重复的元素
    # 输出:
    # C:Python35python.exe D:/linux/python/all_test/总练习.py
    # 5

    集合的in和not in

    #集合
    s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
    print(3 in s)       #在s里返回True
    print(1 in s)       #不在返回Flase
    print(3 not in s)   #不在返回True在返回Flase
    print(1 not in s)   #不在返回True在返回Flase
    # 输出:
    # C:Python35python.exe D:/linux/python/all_test/总练习.py
    # True
    # False
    # False
    # True

    集合的包含

    #集合
    s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
    s1 = set([1,2])
    s3 = {2,5}
    print(s1.issubset(s))    #测试是否 s1 中的每一个元素都在s 中,在为Ture不在为Flase  
    print(s3.issubset(s))    #测试是否 s3 中的每一个元素都在s 中,在为Ture不在为Flase
    #也可以用s1 > s
    # 输出:
    # C:Python35python.exe D:/linux/python/all_test/总练习.py
    # False
    # True

    集合的union(合集)

    s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
    s1 = set([1,2])
    s3 = {2,5,10}
    print(s.union(s1))   #返回一个新的 set 包含 s 和 s1 中的每一个元素,也就是合集
    print(s | s3)        
    # 输出: # C:Python35python.exe D:/linux/python/all_test/总练习.py # {1, 2, 3, 5, 8, 9} # {2, 3, 5, 8, 9, 10}

    集合的inttersection(交集)

    #集合
    s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
    s1 = set([1,2])
    s3 = {2,5,10}
    print(s.intersection(s1))   #返回一个新的 set 包含 s 和 s1 中的公共元素,也就是交集
    print(s & s3)        #返回一个新的 set 包含 s 和 s1 中的公共元素,也就是交集
    # 输出:
    # C:Python35python.exe D:/linux/python/all_test/总练习.py
    # {2}
    # {2, 5}

    集合的difference

    #集合
    s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
    s1 = set([1,2])
    s3 = {2,5,10}
    print(s.difference(s1))   #返回一个新的 set 包含 s有则t 中没有的元素
    print(s - s3)             #返回一个新的 set 包含 s有则t 中没有的元素
    # 输出:
    # C:Python35python.exe D:/linux/python/all_test/总练习.py
    # {8, 9, 3, 5}
    # {8, 9, 3}

    集合的symmetric_difference

    #集合
    s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
    s1 = set([1,2])
    s3 = {2,5,10}
    print(s.symmetric_difference(s1))   #返回一个新的 set 包含 s有则s1 不重复的元素
    print(s ^ s3)             #返回一个新的 set 包含 s有则s1 不重复的元素
    # 输出:
    # C:Python35python.exe D:/linux/python/all_test/总练习.py
    # {1, 3, 5, 8, 9}
    # {8, 9, 10, 3}

    集合的copy

    s1 = s.copy()    #set “s”的一个浅复制
    print(s)        
    print(s1)
    print(id(s))
    print(id(s1))
    # C:Python35python.exe D:/linux/python/all_test/总练习.py
    # {8, 9, 2, 3, 5}
    # {8, 9, 2, 3, 5}
    # 1763954978600     #指向的内存不同
    # 1763955004360  

    这里集合就说完了

  • 相关阅读:
    PreferenceScreen 偏好显示类 的使用
    Android实战技巧:如何在ScrollView中嵌套ListView
    android onActivityResult不执行问题
    java zip解压中文乱码问题
    RandomAccessFile读取大文件时效率很低,现进行改进---BufferedRandomAccessFile
    HTTP RANGE(多线程下载相关)
    Android实现ListView异步加载图片
    自己调用webservice方法总结(带请求头SoapHeader)
    Android将程序崩溃信息保存本地文件
    Android的intent之间复杂参数的传递
  • 原文地址:https://www.cnblogs.com/Plynn/p/6421410.html
Copyright © 2020-2023  润新知