【测试开发学习历程】Python数据类型:set

目录

[1 集合的声明](#1 集合的声明)

[2 集合的运算](#2 集合的运算)

[3 集合的常用函数](#3 集合的常用函数)

[3.1 len()函数](#3.1 len()函数)

[4 集合的常用方法(了解)](#4 集合的常用方法(了解))

[4.1 add()方法](#4.1 add()方法)

[4.2 update()方法](#4.2 update()方法)

[4.3 remove()方法](#4.3 remove()方法)

[4.4 discard()方法](#4.4 discard()方法)

[4.5 pop()方法](#4.5 pop()方法)

[4.6 del关键字](#4.6 del关键字)

[4.7 copy()方法](#4.7 copy()方法)

[4.8 clear()方法](#4.8 clear()方法)


1 集合的声明

  • 集合:集合是一个无序的不重复元素序列。

  • 集合的声明:集合通过{}或set()或集合推导式来声明。注意:创建一个空集合必须用 set() 而不是 {},因为 {} 是用来创建一个空字典。

  • 集合的特点:

    1. 集合是无序的;

    2. 集合的元素不重复,对重复的元素会自动去重;

    3. 集合中的元素可以是任意不可变的数据类型;

    python 复制代码
    # 定义空集合
    set1 = set()
    set2 = {}会表示字典类型
    print(type(set1),len(set1))
    ​
    # 定义非空集合
    set1 = {9,1,5,6,5,1,2,2}
    set2 = {"k","k","k","khjj"}
    print(type(set1),len(set1))
    print(type(set2),len(set2))
    ​
    # 如下集合是非法的,报TypeError: unhashable type: 'list'
    set3 = {[1,2],"abc"}
    ​
    # 集合是无序的,所以重复执行如下两行代码输出可能不一样
    set4 = {1, 3, 5, "hello"}
    print(set4)
  • 利用集合中元素不可重复的特点对列表、元组、字符串去重。

    python 复制代码
    # 例1:对列表去重,只保留不重复的元素
    list1=[1,1,1,2,3,2]
    # 得到的是一个集合
    print(type(set(list1)))
    # 列表转换成集合
    print(set(list1))
    # 集合转换成列表
    print(list(set(list1)))
    ​
    # 例2:对元组去重,只保留不重复的元素
    tup1=(1,1,1,3,3,3)
    #元组转换成集合
    print(set(tup1))
    #集合转换成元组
    print(tuple(set(tup1)))
    ​
    # 例3:利用集合对字符串去重
    str1 = "aaaaffffcccc"
    print((set(str1)))
    print("".join(set(str1)))

2 集合的运算

集合的运算包括:交集、并集、差集、对称差集

  • 交集:取两个集合的公共部分,也就是同时存在于两个集合中的元素。可以通过运算符&或者集合的intersection()方法来实现集合的交集运算。

    python 复制代码
    set1={9,1,5,6,5,1,2,2}
    set2={1,6,2,20,50}
    # 运算符
    print(set1&set2)
    # 方法
    print(set1.intersection(set2))
  • 并集:两个集合中的所有元素,重复的元素只算一次。可以通过运算符|或者集合的union()方法来实现集合的并集运算。

    python 复制代码
    #运算符
    print(set1|set2)
    #方法
    print(set1.union(set2))
  • 差集:set1-set2的结果存在于set1中但不存在于set2中的元素(set1减去set1和set2的交集)。可以通过运算符-或者集合的difference()方法来实现集合的差集运算。

    python 复制代码
    #运算符
    print(set1-set2)
    #方法
    print(set1.difference(set2))
  • 对称差集:取两个集合的交集,然后根据交集取两个集合的补集,最后将补集取并集(并集减去交集),即去除两个集合的交集,各自剩下的元素组成一个新的集合。可以通过运算符^或者集合的symmetric_difference()方法来实现集合的对称差集运算。

    python 复制代码
    #运算符
    print(set1^set2)
    #方法
    print(set1.symmetric_difference(set2))

集合的使用举例:利用集合来判断两个字典的差异。

python 复制代码
expect={"name":"张三","age":20,"sex":"男"}
actual={"name":"李四","heigh":170,"sex":"男"}
#实现断言:如果预期和实际不一致,要打印出它们的差异,输出:预期是{"name":"张三","age":20}实际是{"name":"李四","heigh":170}
set_expect=set(expect.items())
set_actual=set(actual.items())
print(set_expect)
print(set_actual)
print("预期是{}实际是{}".format(dict(set_expect-set_actual),dict(set_actual-set_expect)))

3 集合的常用函数

3.1 len()函数

  • 格式:len(集合)

  • 作用:计算集合中元素的个数

  • 举例:

    python 复制代码
    set1 = {1,2,(2,3),"hello"}
    print(len(set1))

4 集合的常用方法(了解)

4.1 add()方法

  • 格式:add(x)

  • 作用:将元素x添加到集合中,如果元素已存在,则不进行任何操作

  • 举例:

    python 复制代码
    set1 = {1,2,3,4,5}
    set1.add("nihao") #不能添加列表和字典
    print(set1)

4.2 update()方法

  • 格式:update(x)

  • 作用:可以添加元素,参数x可以是字符串、列表、元组、字典等可迭代类型的数据

  • 举例:

    python 复制代码
    set1 = {1,2,3,4,5}
    set1.update([1,6,7])#要添加可迭代的对象,添加字典时,只添加key值
    print(set1)

4.3 remove()方法

  • 格式:remove(x)方法

  • 作用:将元素x从集合中移除,如果元素不存在,则会拋KeyError异常

  • 举例:

    python 复制代码
    #remove()方法举例
    set1 = {1,2,3,4,5}
    set1.remove(3) #不会返回删除的值
    print(set1)

4.4 discard()方法

  • 格式:discard(x)方法

  • 作用:移除集合中的元素,且如果元素不存在,不会做任何操作也不会拋异常

  • 举例:

    python 复制代码
    #discard()举例
    set1.discard(3) #也不会返回删除的值
    print(set1)

4.5 pop()方法

  • 格式:pop()

  • 作用:随机删除集合中的一个元素

  • 举例:

    python 复制代码
    #pop()方法举例
    set1.pop() #不用传参数,且随机删除一个元素(每次删除的都是集合排序里的第一个元素),并返回删除的元素
    print("删除前",set1)
    print(set1.pop())
    print("删除后",set1)

4.6 del关键字

  • 作用:删除整个集合

  • 格式:del 集合

  • 举例:

    python 复制代码
    #del,删除整个集合
    del set1
    print(set1) # 删除后打印会报错

4.7 copy()方法

  • 作用:复制集合

  • 举例:

    python 复制代码
    set1 = {1,2,(2,3),"hello"}
    set2 = set1.copy()
    print(set1,set2)

4.8 clear()方法

  • 作用:清空集合

  • 举例:

    python 复制代码
    set1 ={1,2,4}
    set1.clear()
    print(set1)  # 清空过后为空集合set()
相关推荐
ZJ_.1 分钟前
Node.js 使用 gRPC:从定义到实现
java·开发语言·javascript·分布式·rpc·架构·node.js
techlead_krischang13 分钟前
中国软件评测中心最新报告:文心大模型技术、产品、应用全面领跑
后端·go
ljh_a115 分钟前
Django 和 Django REST framework 创建对外 API
python·http·django·flask·tornado
syluxhch15 分钟前
Pycharm的终端(Terminal)中切换到当前项目所在的虚拟环境
ide·python·pycharm
yjjpp230116 分钟前
Django REST Framework(四)DRF APIVIEW
后端·python·django
concisedistinct20 分钟前
大数据开发语言 Scala(四):面向对象编程
大数据·开发语言·后端·scala·编程语言·面向对象
铁匠匠匠21 分钟前
django学习入门系列之第三点《BootSrap初了解》
前端·经验分享·笔记·python·学习·django·前端框架
2019一路前行26 分钟前
本地Windows电脑 连接 Windows 服务器
运维·服务器
翠花也老了27 分钟前
linux 中 vi 和 less 命令(超全建议收藏)
linux·运维·less·vi