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~

  • 相关阅读:
    623. Add One Row to Tree 将一行添加到树中
    771. Jewels and Stones 珠宝和石头
    216. Combination Sum III 组合总数三
    384. Shuffle an Array 随机播放一个数组
    382. Linked List Random Node 链接列表随机节点
    向github项目push代码后,Jenkins实现其自动构建
    centos下安装Jenkins
    python提取批量文件内的指定内容
    批处理实现:批量为文件添加注释
    python抓取每期双色球中奖号码,用于分析
  • 原文地址:https://www.cnblogs.com/gybb/p/9792622.html
Copyright © 2011-2022 走看看