Python集合类型及操作

一. 集合类型概述(set)

1. 定义

Python语言中的集合和数学上概念上的集合类似,被用来存放一组无序且互不相同的元素。

2. 特点

组成集合的元素不可更改,必须是不可变数据类型

集合是多个元素的无序组合

集合中的每个元素唯一,不存在相同的元素

不可变数据类型:整数、浮点数、复数、字符串类型、元组类型

二. 集合的创建与访问

1. 直接创建集合

(1). 定义

集合的创建和字典类似,也是直接将元素放在一对{ }中,元素之间使用,分隔

(2). 语法

set1 = {元素1, 元素2,...}

(3). 举例

>>> set1 = {6,3,3,(5,6),"str",8.8}
>>> set1
{3, 6, 'str', 8.8, (5, 6)}

注:集合中包含重复元素3,但是完成创建之后的集合,只保留了一个

(4). 注意

在使用空的set1= { }直接创建的是字典,而不是集合

创建空的集合不可以使用{ }

2. 使用set()函数创建集合

(1). 定义

Python内置函数set()用来将序列转换为集合,在转换的过程中重复的元素只会保留一个

(2). 语法

s1 = set(序列类型元素)

注set()函数最多只能设定一个参数
并且序列类型数据不能是字典

(3). 举例

>>> s1 = set("Hello world!")
>>> s2 = set([1,2,3,4,2,1,5])
>>> s3 = set((1,2,"str"))
>>> s1
{'H', 'e', 'r', 'w', 'd', 'l', ' ', '!', 'o'}
>>> s2
{1, 2, 3, 4, 5}
>>> s3
{'str', 1, 2}

注:set()函数在将序列转换为集合时自动去掉重复项

(4). 注意

创建空的集合不能使用一对{ },这样创建的是个空字典

只能使用不带参数的set()函数

语法:

>>> s1 = set()
>>> type(s1)
<class 'set'>

3. 集合的访问

集合的元素是无序的,也没有键和值的概念,所以集合元素的访问

要么通过集合名整体输出

要么通过for循环实现元素的遍历

三. 集合的基本操作

1. 集合处理方法

在这里插入图片描述
在这里插入图片描述

2. 常见集合元素操作

(1). 添加元素

1. s.add(item)

将参数item作为元素添加到集合s中,如果item是序列,则将其作为一个元素整体加入集合

作为参数的item只能是不可变的数据
>>> s
{2, 3, 4}
>>> s.add({1,2})
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    s.add({1,2})
TypeError: unhashable type: 'set'

>>> s.add([1,2])
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    s.add([1,2])
TypeError: unhashable type: 'list'

注:这时候会报错。原因是set 加入的元素得不可hash的。

那么哪些是可哈希元素?哪些是不可哈希元素?
可哈希的元素有:int、float、str、tuple
不可哈希的元素有:list、set、dict

为什么 list 是不可哈希的,而 tuple 是可哈希的
(1)因为 list 是可变的在它的生命期内,你可以在任意时间改变其内的元素值。
(2)tuple却不可以改变它的值

2. s.update(items)

将参数序列items中的元素拆分去重之后加入集合

参数items可以是可变数据

(2). 删除元素

1. s.remove(item)

将指定元素item从集合s中删除

如果元素item在集合中不存在,系统会报错

2. s.discard(item)

将指定元素item从集合s中删除,
如果item在集合中不存在,系统正常执行,无任何输出

3. s.pop()

从集合s中随机删除并返回这一个删除的元素

4. s.clear()

清空集合中的所有元素
但是集合任然存在

(3). 成员判断

1. item in s

判断元素item是否在集合s中,
若在,返回True
若不在,返回False

可配合remove()函数使用

四. 集合的数学运算

1. 集合操作符

(1). 集合操作符

在这里插入图片描述

(2). 集合间操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五. 集合类型应用场景

1. 包含关系比较

在这里插入图片描述

2. 数据去重:集合类型所有元素无重复

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值