首页 > Python资料 博客日记
【Python】set() 函数详解:集合运算、查找、去重 (附代码示例)
2024-10-14 04:00:05Python资料围观35次
文章【Python】set() 函数详解:集合运算、查找、去重 (附代码示例)分享给大家,欢迎收藏Python资料网,专注分享技术知识
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}
求唯一值
import pandas as pd
import numpy as np
# 创建水果列表
fruits = ['苹果', '香蕉', '橙子']
# 随机生成包含 20 行的 DataFrame
df= 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,则都返回:{'苹果', '香蕉', '橙子'}
快速查找
my_set = {1, 2, 3, 4, 5}
print(3 in my_set) # 输出: True
集合的运算
-
add (添加元素):
s = {1, 2, 3} s.add(4) # 添加元素4到集合s中
-
clear (清空):
s = {1, 2, 3} s.clear() # 清空集合s中的所有元素
-
copy (复制):
s = {1, 2, 3} t = s.copy() # 复制集合s到集合t中
-
difference (差集):
s1 = {1, 2, 3} s2 = {3, 4, 5} diff = s1.difference(s2) # 返回s1中存在但s2中不存在的元素 diff # 返回s1:{1,2}
-
difference_update (差集更新):
s1 = {1, 2, 3} s2 = {3, 4, 5} s1.difference_update(s2) # 从s1中移除s2中存在的元素 s1 # 返回:{1,2}
-
discard (移除):
s = {1, 2, 3} s.discard(2) # 移除集合s中的元素2 s # 返回:{1,3}
-
intersection (交集):
s1 = {1, 2, 3} s2 = {3, 4, 5} intersection = s1.intersection(s2) # 返回同时存在于s1和s2中的元素 intersection # 返回: {3}
-
intersection_update (交集更新):
s1 = {1, 2, 3} s2 = {3, 4, 5} s1.intersection_update(s2) # 保留同时存在于s1和s2中的元素到s1中 s1 # 返回: {3}
-
isdisjoint (不相交):
s1 = {1, 2, 3} s2 = {4, 5, 6} disjoint = s1.isdisjoint(s2) # 如果s1和s2没有共同元素则返回True disjoint # 返回:True
-
issubset (子集):
s1 = {1, 2} s2 = {1, 2, 3, 4} subset = s1.issubset(s2) # 如果s1是s2的子集则返回True subset # 返回:True
-
issuperset (超集):
s1 = {1, 2, 3, 4} s2 = {1, 2} superset = s1.issuperset(s2) # 如果s1包含s2则返回True superset # 返回:True
-
pop (弹出):
s = {1, 2, 3} popped = s.pop() # 弹出并返回集合s中的任意元素 popped # 返回:1(示例中可能得到的任意元素)
-
remove (移除):
s = {1, 2, 3} s.remove(2) # 从集合s中移除元素2,如果不存在则引发错误 s # 返回:{1, 3}
-
symmetric_difference (对称差集):
s1 = {1, 2, 3} s2 = {3, 4, 5} sym_diff = s1.symmetric_difference(s2) # 返回仅存在于一个集合中的元素 sym_diff # 返回:{1, 2, 4, 5}
-
symmetric_difference_update (对称差集更新):
s1 = {1, 2, 3} s2 = {3, 4, 5} s1.symmetric_difference_update(s2) # 更新s1为仅存在于一个集合中的元素 s1 # 返回:{1, 2, 4, 5}
-
union (并集):
s1 = {1, 2, 3} s2 = {3, 4, 5} union_set = s1.union(s2) # 返回s1和s2的所有元素的集合 union_set # 返回:{1, 2, 3, 4, 5}
-
update (更新):
s1 = {1, 2, 3} s2 = {3, 4, 5} s1.update(s2) # 将s2中的元素添加到s1中 s1 # 返回:{1, 2, 3, 4, 5}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
上一篇:jenkins远程调用
下一篇:python内置open函数详解
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj