找回密码
 会员注册
查看: 23|回复: 0

Pythonset()函数详解:集合运算、查找、去重(附代码示例)

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
70610
发表于 2024-9-5 14:27:01 | 显示全部楼层 |阅读模式
set函数介绍在Python中,集合(Set)是一种无序且元素唯一的数据结构。集合中的元素不能重复,即每个元素在集合中只能出现一次。集合是一种高效的查找结构。Python中的集合(set)通常是通过哈希表实现的。哈希表是一种数据结构,它使用哈希函数将键映射到存储桶(buckets)中,以便在常数时间复杂度内执行插入、删除和查找操作。换言之,无论集合中有多少个元素,查找某个元素所需的时间都是固定的,与集合的大小无关。因此在大数据量的情况下,集合仍然具有高效的性能。在《【数据分析面试】26.判断相同字符》中,答案使用了set()函数将字符串转换为集合。set()函数会创建一个新的集合对象,并且会去除字符串中重复的字符,因为集合中的元素是唯一的。然后通过len()函数获取集合的长度,如果集合的长度为1,说明字符串中的所有字符都相同,即集合中只包含一个元素,因此返回True,否则返回False。集合的其他常见用法包括:去除重复元素:和unique用法相似:df['列名'].unique()和set(df['列名])得到的结果相同。快速查找:由于集合的特性是每个元素都是唯一的,因此在集合中查找元素的速度非常快。集合运算:比如集合的交、并、差等。代码示例创建集合#从列表创建集合my_list=[1,2,3,3,4]my_set=set(my_list)print(my_set)#输出:{1,2,3,4}#从字符串创建集合my_string="hello"my_set=set(my_string)print(my_set)#输出:{'l','o','h','e'}#从元组创建集合my_tuple=(1,2,3,3,4)my_set=set(my_tuple)print(my_set)#输出:{1,2,3,4}1234567891011121314'运行运行求唯一值importpandasaspdimportnumpyasnp#创建水果列表fruits=['苹果','香蕉','橙子']#随机生成包含20行的DataFramedf=pd.DataFrame({'水果':np.random.choice(fruits,20),'数量':np.random.randint(1,10,20),#生成随机数量'价格':np.random.uniform(1.0,10.0,20)#生成随机价格})set(df['水果'])#返回:{'橙子','苹果','香蕉'}df['水果'].unique()#返回:array(['苹果','橙子','香蕉'],dtype=object)#如果使用print,则都返回:{'苹果','香蕉','橙子'}12345678910111213141516'运行运行快速查找my_set={1,2,3,4,5}print(3inmy_set)#输出:True12'运行运行集合的运算add(添加元素):s={1,2,3}s.add(4)#添加元素4到集合s中12'运行运行clear(清空):s={1,2,3}s.clear()#清空集合s中的所有元素12'运行运行copy(复制):s={1,2,3}t=s.copy()#复制集合s到集合t中12'运行运行difference(差集):s1={1,2,3}s2={3,4,5}diff=s1.difference(s2)#返回s1中存在但s2中不存在的元素diff#返回s1:{1,2}1234'运行运行difference_update(差集更新):s1={1,2,3}s2={3,4,5}s1.difference_update(s2)#从s1中移除s2中存在的元素s1#返回:{1,2}1234'运行运行discard(移除):s={1,2,3}s.discard(2)#移除集合s中的元素2s#返回:{1,3}123'运行运行intersection(交集):s1={1,2,3}s2={3,4,5}intersection=s1.intersection(s2)#返回同时存在于s1和s2中的元素intersection#返回:{3}1234'运行运行intersection_update(交集更新):s1={1,2,3}s2={3,4,5}s1.intersection_update(s2)#保留同时存在于s1和s2中的元素到s1中s1#返回:{3}1234'运行运行isdisjoint(不相交):s1={1,2,3}s2={4,5,6}disjoint=s1.isdisjoint(s2)#如果s1和s2没有共同元素则返回Truedisjoint#返回:True1234'运行运行issubset(子集):s1={1,2}s2={1,2,3,4}subset=s1.issubset(s2)#如果s1是s2的子集则返回Truesubset#返回:True1234'运行运行issuperset(超集):s1={1,2,3,4}s2={1,2}superset=s1.issuperset(s2)#如果s1包含s2则返回Truesuperset#返回:True1234'运行运行pop(弹出):s={1,2,3}popped=s.pop()#弹出并返回集合s中的任意元素popped#返回:1(示例中可能得到的任意元素)123'运行运行remove(移除):s={1,2,3}s.remove(2)#从集合s中移除元素2,如果不存在则引发错误s#返回:{1,3}123'运行运行symmetric_difference(对称差集):s1={1,2,3}s2={3,4,5}sym_diff=s1.symmetric_difference(s2)#返回仅存在于一个集合中的元素sym_diff#返回:{1,2,4,5}1234'运行运行symmetric_difference_update(对称差集更新):s1={1,2,3}s2={3,4,5}s1.symmetric_difference_update(s2)#更新s1为仅存在于一个集合中的元素s1#返回:{1,2,4,5}1234'运行运行union(并集):s1={1,2,3}s2={3,4,5}union_set=s1.union(s2)#返回s1和s2的所有元素的集合union_set#返回:{1,2,3,4,5}1234'运行运行update(更新):s1={1,2,3}s2={3,4,5}s1.update(s2)#将s2中的元素添加到s1中s1#返回:{1,2,3,4,5}1234'运行运行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 12:43 , Processed in 0.634641 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表