zoukankan      html  css  js  c++  java
  • 『Python基础-11』集合 (set)

    『Python基础-11』集合 (set)


    目录:

    1. 集合的基本知识
    2. 集合的创建
    3. 访问集合里的值
    4. 向集合set增加元素
    5. 移除集合中的元素
    6. 集合set的运算


    1. 集合的基本知识

    • 集合(set)是一个无序不重复元素的序列
      • 无序
      • 不重复
    • {}来界定
      • {}内双元素的是字典-字典是键值对的组合
      • {}内单元素的是集合-集合单元素的组合
    • 无法使用位置下标
    • 元素不重复,同一集合中,每个元素都是唯一的
    • 集合也不能排序,sort()是不能使用的。
    • 集合中只能包含不可变类型(即可哈希的数据)
      • 可包含: 数字,字符串,元祖
      • 不可包含:列表,集合,字典
    • 集合的优势
      • 由于集合中的元素不能出现多次,这使得集合在很大程度上能够高效地从列表或元组中删除重复值,并执行取并集、交集等常见的的数学操作。
    • 集合的主要作用
      • 去重,把一个列表变成集合就自动去重了
      • 关系测试,测试两组数据之前的交集,差集,并集,子集,父集,对称(反向)差集等关系

    2. 集合的创建

    • 可以使用大括号 { } 或者 set()创建函数创建集合.
      • 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
      • 如果用set(),括号里只能有一个参数. 例: 可以set1=set([1,2,3,4]);不可以set1=set(1,2,3,4),会报错.
    set0 = set() #创建空集合
    set1 = set([1,2,3,4,5])
    set2 = {1,2,3,4}
    print(set0,type(set0))
    print(set1,type(set1))
    

    上述代码运行结果:

    set() <class 'set'>
    {1, 2, 3, 4, 5} <class 'set'>
    {1, 2, 3, 4} <class 'set'>
    

    [注意:] 集合是内的元素是不能重复的, 在给集合变量赋值的时候,如有重复的元素,该集合在输出的时候,重复的元素会被自动筛除.不会报错.

    set3 = {'红色','红色','黄色','黄色','蓝色','蓝色','黄色'}
    

    运行结果:

    {'蓝色', '红色', '黄色'} #重复元素在set中自动被过滤
    

    [注意:] set('字符串')和set({"字符串"})或set(["字符串"])是完全不同的含义:

    set1 = set("你好呀!") #会将字符串拆分输出
    set2 = set({"你好呀":1})
    set3 = set(['你好呀'])
    print(set1,type(set1))
    print(set2,type(set2))
    print(set3,type(set3))
    

    运行结果如下:

    {'你', '!', '呀', '好'} <class 'set'>
    {'你好呀'} <class 'set'>
    {'你好呀'} <class 'set'>
    

    3. 访问集合里的值

    • 集合和字典一样是无序的,所以不能通过下标的方式进行访问
    • 只能通过成员操作符in 和not in判断某个元素是否在集合里
    • 也可以通过for循环吧集合中的元素遍历出来

    in, not in

    in和not in,两个方法一样,这里以'in'为例:

    # 注意对比set 和 set2
    set1 = {'apple'}
    print(set1,type(set1))
    print("a" in set1)
    print("apple" in set1)
    
    set2 = set('apple')
    print(set2,type(set2))
    print("a" in set2)
    print("apple" in set2)
    

    上述代码运行结果如下:

    {'apple'} <class 'set'>
    False
    True
    {'a', 'e', 'p', 'l'} <class 'set'>
    True
    False
    

    4. 向集合set增加元素

    • 使用.add()增加单个元素
    • 使用.update增加多个元素
    set5 = {1,3,5,7}
    print("原始set:",set5)
    set5.add('abc') 
    print("add元素后的set:",set5)
    
    set6 = {1,3,5,7}
    print("原始set:")
    set6.update('abc')  #把插入的元素拆分,做为个体传入到集合中
    print("update后的set:",set6)
    

    上述代码运行后的结果:

    原始set: {1, 3, 5, 7}
    add元素后的set: {1, 3, 5, 7, 'abc'}
    
    原始set: {1, 3, 5, 7}
    update后的set: {1, 3, 5, 7, 'b', 'a', 'c'}
    

    [注意:]
    只能将不可变的值(例如一个字符串或一个元组)加入到集合中。如果试图将一个列表(list)添加到集合中,系统会返回类型错误「TyprError」。


    5. 移除集合中的元素

    • setA.remove(x):将元素 x 从集合setA中移除,如果元素不存在,则会发生错误。
    • setA.discard(x):将元素x从集合setA中移除,如果集合中没有字符串a也不会报错,自动忽略。
    • setA.pop():随机从集合setA中删除并返回一个元素
    • setA.clear():清空集合setA中所有的元素
    • del setA:彻底删除整个setA

    6. 集合set的运算

    在Python中, 集合set是基本数据类型中的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种。创建集合set、集合set添加、集合删除、交集、并集、差集的操作都是非常实用的方法。

    除此之外, 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.

    Python 中常用的集合方法是执行标准的数学运算,例如:求并集、交集、差集以及对称差。

    下图显示了一些在集合 A 和集合 B 上进行的标准数学运算。每个韦恩(Venn)图中的红色部分是给定集合运算得到的结果。
    a23314883d9a45768b303954985cf191.jpeg


    这篇文章有详细介绍:
    入门 | 一文带你了解Python集合与基本的集合运算_搜狐科技_搜狐网



    谢谢阅读!O(∩_∩)O~

  • 相关阅读:
    4 Apr 18 软件开发目录 logging模块的使用 序列化(Json, Pickle) os模块
    3 Apr 18 内置函数 列表生成式与生成器表达式 模块的使用之import 模块的使用之from…import…
    2 Apr 18 三元表达式 函数递归 匿名函数 内置函数
    30 Mar 18 迭代器 生成器 面向过程的编程
    29 Mar 18 函数 有参、无参装饰器
    28 Mar 18 函数
    27 Mar 18 函数的参数
    26 Mar 18 函数介绍
    23 Mar 18 文件处理
    22 Mar 18 补充数据类型+字符编码+文件处理
  • 原文地址:https://www.cnblogs.com/gybb/p/9792622.html
Copyright © 2011-2022 走看看