python集合语法与应用

举报
AOAIYI 发表于 2023/04/25 12:23:32 2023/04/25
【摘要】 集合中只能包含数字、字符串、元组等不可变的类型的数据,而不能包含列表、字典、集合等可变类型的数据。Python提供了一个内置函数hash()来计算对象的哈希值,凡是无法计算哈希值(调用hash()函数时抛出异常的)的对象都不能作为集合的元素,也不能作为字典对象的“键”。

一、实验目的

掌握集合的用法

二、实验原理

集合中只能包含数字、字符串、元组等不可变的类型的数据,而不能包含列表、字典、集合等可变类型的数据。Python提供了一个内置函数hash()来计算对象的哈希值,凡是无法计算哈希值(调用hash()函数时抛出异常的)的对象都不能作为集合的元素,也不能作为字典对象的“键”。

内置函数len()、max()、min()、sum()、sorted()以及成员测试运算符in也适用于集合。

三、实验环境

Python3.6以上

IPython

PyCharm

四、实验内容

集合

五、实验步骤

1.创建

1.集合是无序可变序列,使用一对大括号作为界定符,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,元素之间不允许重复。

在Python中,直接将集合赋值给变量,即创建一个集合对象。

a={3,4}
#创建集合对象
a
#查看对象内容
type(a)

2.使用set()函数将列表、元组等其他可迭代对象转换为集合,如果原来的数据中存在重复元素,则在转换为集合的时候只保留一个。

#把range对象转换为集合
a_set=set(range(8,14))
a_set
#转换时自动去除重复
b_set=set([0,1,2,3,4,0,1,2,3,7,8])
b_set
#空集合
x=set()
x

注意:当不再使用某个集合时,可以使用del命令删除整个集合。

2.增加

1.使用集合对象的add()方法可以为其增加新元素,如果该元素已存在于集合则忽略该操作,update()方法用于合并另外一个集合中的元素到当前集合中。

s={1,2,3}
#添加元素,重复元素自动忽略
s.add(3)
s
#更新当前集合,自动忽略重复的元素
s.update({3,4})
s

3.删除

1.集合对象的pop()方法用于随机删除并返回集合中的一个元素,如果集合为空则抛出异常,remove()方法用于删除集合中的元素,如果指定元素不存在则抛出异常,discard()用于从集合中删除一个特定的元素,如果元素不存在集合中则忽略该操作,clear()方法清空集合删除所有元素。

#删除元素,元素不存在则忽略该操作
s={1,2,3,4}
s.discard(5)
s
#删除指定元素,元素不存在就抛出异常
s.remove(5)
#随机删除集合中的元素,并返回删除的元素
s.pop()

4.集合运算

1.Python集合支持交集、并集、差集等运算

a_set=set([8,9,10,11,12,13])
b_set=set([0,1,2,3,4,7,8])
#并集
a_set | b_set
#并集
a_set.union(b_set)
#交集
a_set.intersection(b_set)
#交集
a_set & b_set
#差集
a_set.difference(b_set)
a_set - b_set
#对称差集
a_set.symmetric_difference(b_set)
a_set ^ b_set

2.集合比较判断是否为子集

x={1,2,3}
y={1,2,5}
z={1,2,3,4}
#比较集合大小
x < y
x < z
y < z
#测试是否为子集
x.issubset(y)
x.issubset(z)

注意:关系运算符>,>=,<,<=作用于集合时表示集合之间的包含关系,而不是集合中元素比较大小。

5.拓展知识一

使用传统的方法,提取出序列中所有不重复元素。

import random
#生成100个介于0~9999之间的随机数
listRandom=[random.choice(range(10000)) 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)
newSet

6.拓展知识二

Python也支持集合推导式

{x.strip() for x in ('  he   ','she  ','  I')}
import random
#生成随机数自动去除重复元素
x={random.randint(1,500) for i in range(100)}
#输出结果会小于等于100
len(x)

总结

以上就是本文要讲的内容,本文介绍了集合创建、增加、删除和集合运算。集合是无序可变序列,使用一对大括号作为界定符,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,元素之间不允许重复。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。