• Python——序列_集合



    前言

    提示:这里可以添加本文要记录的大概内容:

    集合是无序、可变序列,使用一对大括号{}界定,
    可以理解成一种特殊的字典,即只存储key,但不存储value的字典。
    由于key不能重复,所以,在set中,没有重复的key。即集合里的元素不可重复,同一个集合中每个元素都是唯一的。

    由于key必须是不可变元素,所以集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。


    提示:以下是本篇文章正文内容,下面案例可供参考

    集合的创建与删除

    部分编译器原因,需要在输出前面加上print()

    直接将集合赋值给变量

    >>> a = {3, 5}
    >>> a.add(7)    #向集合中添加元素
    >>> a
    {3, 5, 7}
    
    • 1
    • 2
    • 3
    • 4

    使用set 将其他类型数据转换为集合

    >>> a_set = set(range(8,14))
    >>> a_set
    {8, 9, 10, 11, 12, 13}
    >>> b_set = set([0, 1, 2, 3, 0, 1, 2, 3, 7, 8])    #自动去除重复
    >>> b_set
    {0, 1, 2, 3, 7, 8}
    >>> c_set = set()    #空集合
    >>> c_set
    set()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    使用add方法向集合中增加元素。集合对象的pop()方法随机弹出并删除其中一个元素,remove()方法直接删除指定元素,clear()方法清空集合。

    >>> a
    {3, 4}
    >>> a.add(2)
    >>> a
    {2, 3, 4}
    >>> a = {1, 4, 2, 3}
    >>> a.pop()
    1
    >>> a.pop()
    2
    >>> a.remove(3)
    >>> a
    {2, 4}
    >>> a.clear()
    >>> a
    set()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    使用del删除整个集合
    当不再使用某个集合时,可以使用del命令删除整个集合。集合对象的pop()方法弹出并删除其中一个元素,remove()方法直接删除指定元素,clear()方法清空集合。

    >>> a = {1, 4, 2, 3}
    >>> a.pop()
    1
    >>> a.pop()
    2
    >>> a
    {3, 4}
    >>> a.add(2)
    >>> a
    {2, 3, 4}
    >>> a.remove(3)
    >>> a
    {2, 4}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    集合操作(验证)

    set集合可以看成数学意义上的无序和无重复元素的集合,因此,Python集合支持交集、并集、差集等运算

    代码如下(示例):

    >>> a_set = set([8, 9, 10, 11, 12, 13])
    >>> b_set = {0, 1, 2, 3, 7, 8}
    >>> a_set | b_set   #并集
    {0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13}
    >>> a_set.union(b_set)   #并集
    {0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13}
    >>> a_set & b_set   #交集
    {8}
    >>> a_set.intersection(b_set)   #交集
    {8}
    >>> a_set.difference(b_set)   #差集
    {9, 10, 11, 12, 13}
    >>> a_set - b_set
    {9, 10, 11, 12, 13}
    >>> a.symmetric_difference(b)      #对称差集
    {0, 1, 2, 3, 7, 9, 10, 11, 12, 13}
    >>> a ^ b  			#对称差集
    {0, 1, 2, 3, 7, 9, 10, 11, 12, 13}
    >>> x = {1, 2, 3}
    >>> y = {1, 2, 5}
    >>> z = {1, 2, 3, 4}
    >>> x.issubset(y)  #测试是否为子集
    False
    >>> x.issubset(z)
    True
    >>> {3} & {4}
    set()
    >>> {3}.isdisjoint({4})  #如果两个集合的交集为空,返回True
    True
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    集合包含关系测试,比较运算符结果表示集合包含关系。

    代码如下(示例):

    >>> x = {1, 2, 3}
    >>> y = {1, 2, 5}
    >>> z = {1, 2, 3, 4}
    >>> x < y    #比较集合大小/包含关系
    False
    >>> x < z    #真子集
    True
    >>> y < z
    False
    >>> {1, 2, 3} <= {1, 2, 3}    #子集
    True
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    集合操作

    使用集合快速提取序列中单一元素
    【例一】

    >>> import random
    >>> listRandom = [random.choice(range(10)) for i in range(100)]
    >>> noRepeat = []
    >>> for i in listRandom :
    	if i not in noRepeat :
    		noRepeat.append(i)
    >>> len(listRandom)
    >>> len(noRepeat)
    >>> newSet = set(listRandom)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    集合推导式:{表达式 for item in 容器 if 条件}

    >>> s = {x.strip() for x in (' he ', 'she ', ' I')} 
    >>> s 
    {'I', 'she', 'he'}
    
    • 1
    • 2
    • 3

    【例】

    >>> l= [1,2,3,4,5,6,7,4,5,6,7,0]
    >>> r= []
    >>> for i in l:
    	  if i not in r:
    		 r.append(i)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果使用集合,只需如下一行代码

    >>> s= set(l)
    
    • 1

    练习

    使用dict()函数实现存储一个人的姓名、手机号、和地址信
    息,字符串名称和值由自己定义和赋值

    # 使用dict()函数实现存储一个人的姓名、手机号、和地址信息,字符串名称和值由自己定义和赋值
    area_info = "name phone_num address"
    area_info_key = area_info.split(" ")
    area_value=("Grace 123 Dali","Tom 234 Beijing")
    area_info_value=[str.split(" ") for str in area_value]
    print(area_info_value)
    stu_dic_all={}
    for i in area_info_value:
        stu_dic = ({key:value for key,value in zip(area_info_key,i)})
        print(stu_dic)
        stu_dic_all.update(stu_dic)
    print(stu_dic_all)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    请添加图片描述

  • 相关阅读:
    软件测试永远的家——银行测试,YYDS
    Python类和对象(在学过其他语言类和对象的基础上)
    8位和32位单片机基本数据类型所占大小
    强化学习-学习笔记1 | 基础概念
    MySQL基础篇【第六篇】| 存储引擎、事务、索引、视图、DBA命令、数据库设计三范式
    【MMDetection3D】MVXNet踩坑笔记
    .Net CLR
    Centos7安装mysql
    utf8和utf8mb4字符集
    Redis ----Spring MVC 有时候找不到类的原因
  • 原文地址:https://blog.csdn.net/rej177/article/details/127629381