zoukankan      html  css  js  c++  java
  • Python开发——数据类型【集合】

    集合的定义

       由一个或多个确定的元素所构成的整体

    可变集合

    1 s=set('hello')
    2 print(s)        # {'e', 'l', 'o', 'h'}
    3 
    4 s=set(['alex','alex','Lucy'])
    5 print(s)        # {'alex', 'Lucy'}
    6 
    7 s = {1,2,3,4,5,6,7}
    8 print(s)

    不可变集合

    1 s = {1,2,3,4,5,6,7}
    2 print(s)        # {1, 2, 3, 4, 5, 6, 7}
    3 # 改为不可变集合
    4 fs = frozenset(s)
    5 print(fs)       # frozenset({1, 2, 3, 4, 5, 6, 7})

    集合的特性

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

       2、互异性(去重)

       3、无序性(集合中的元素没有先后之分,如集合{3,4,5}和{3,5,4}算作同一个集合)

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

    去重

    1 p_li = [1,2,3,4,3,5]
    2 # 去重
    3 p_s = set(p_li)
    4 print(p_s)      # {1, 2, 3, 4, 5}

    集合的关系运算

     1 p_s1 = {'张三','王五','李四'}
     2 p_s2 = {'李四','王五','赵六'}
     3 # 交集
     4 print(p_s1.intersection(p_s2))  # {'李四', '王五'}
     5 print(p_s1&p_s2)                # {'李四', '王五'}
     6 # 并集
     7 print(p_s1.union(p_s2))         # {'张三', '李四', '王五', '赵六'}
     8 print(p_s1|p_s2)                # {'张三', '李四', '王五', '赵六'}
     9 # 差集【A-交集】
    10 print(p_s1.difference(p_s2))    # {'张三'}
    11 print(p_s1-p_s2)                # {'张三'}
    12 # 对称差集【并集-交集】
    13 print(p_s1.symmetric_difference(p_s2))  # {'赵六', '张三'}
    14 print(p_s1^p_s2)                        # {'赵六', '张三'}
    15 # A更新为交集
    16 # p_s1.intersection_update(p_s2)
    17 # A更新为差集
    18 # p_s1.difference_update(p_s2)
    19 # A更新为对称差集
    20 # p_s1.symmetric_difference_update()
    21 # print(p_s1)

    集合的内置函数

    常见

     1 s = {1,2,3,4,5,6,7}
     2 print(s)        # {1, 2, 3, 4, 5, 6, 7}
     3 # 添加
     4 s.add('a')      
     5 print(s)        # {1, 2, 3, 4, 5, 6, 7, 'a'}
     6 # 清空
     7 s.clear()
     8 print(s)        # set()
     9 
    10 s = {1,2,3,4,5,6,7}
    11 # 随机删除
    12 s.pop()
    13 print(s)
    14 s = {1,2,3,4,5,6,7}
    15 # 指定删除,若无报错
    16 s.remove(5)
    17 print(s)
    18 s = {1,2,3,4,5,6,7}
    19 # 指定删除,若无不报错
    20 s.discard(8)
    21 print(s)

    补充

     1 s = {1,2}
     2 print(s)        # {1, 2}
     3 # 单个元素的增加
     4 s.add(3)
     5 print(s)        # {1, 2, 3}
     6 # 多个元素的增加
     7 s.update([3,4],[7,8])
     8 print(s)        # {1, 2, 3, 4, 7, 8}
     9 s.update('hello')
    10 print(s)        # {1, 2, 3, 4, 'o', 7, 8, 'e', 'l', 'h'}

    其他

    1 p_s1 = {'张三','王五','李四'}
    2 p_s2 = {'李四','王五','赵六'}
    3 # 判断两个集合是不是相交
    4 print(p_s1.isdisjoint(p_s2))
    5 # 判断集合是不是包含其他集合
    6 print(p_s1.issuperset(p_s2))
    7 # 判断集合是不是被其他集合包含
    8 print(p_s2.issubset(p_s2))
  • 相关阅读:
    机器学习笔记(二)---- 线性回归
    机器学习笔记(一)----基本概念
    ZZ:SDNLAB技术分享(一):ODL的SFC入门和Demo
    zz:NETCONF协议详解
    技术谈 | SDN 和 NFV 之间的爱与恨
    华为云内容审核—性能更加狂野,价格更加腼腆
    【并发技术01】传统线程技术中创建线程的两种方式
    【开发者portal在线开发插件系列五】命令的响应,即命令结果的上报(mid的使用)
    【并发技术16】线程同步工具Exchanger的使用
    什么是API文档?--斯科特·马文
  • 原文地址:https://www.cnblogs.com/yuanlili/p/8569168.html
Copyright © 2011-2022 走看看