首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 如何获取列表的所有唯一值

Python 如何获取列表的所有唯一值

作者头像
小田测测看
发布2026-06-17 17:23:00
发布2026-06-17 17:23:00
990
举报

假设有一个包含重复元素的列表:

代码语言:javascript
复制
fruits = ["苹果", "苹果", "香蕉", "橙子", "橙子", "葡萄"]

但想要一个没有重复元素的列表:

代码语言:javascript
复制
unique_fruits = ["苹果", "香蕉", "橙子", "葡萄"]

在 Python 中获取唯一值列表有多种方法,本文将为你详细介绍。

方法 1:使用集合获取唯一元素

集合的特性是元素不可重复,因此非常适合用于去重。我们可以先将列表转换为集合,再将集合转回列表,即可得到去重结果。

下面是两种基于集合的实现方式,第一种较为详细,便于理解每一步的过程:

代码语言:javascript
复制
fruits = ["苹果", "香蕉", "香蕉", "橙子", "橙子", "葡萄", "草莓"]

def get_unique_fruits(fruits):
    # 创建空列表,用于存储最终的唯一值
    list_of_unique_fruits = []
    # 将列表转换为集合,自动去重
    unique_fruits = set(fruits)
    # 遍历集合,将元素添加到列表中
    for fruit in unique_fruits:
        list_of_unique_fruits.append(fruit)
    return list_of_unique_fruits

print(get_unique_fruits(fruits))
# 输出:['苹果', '香蕉', '橙子', '葡萄', '草莓'](顺序可能不同)

步骤解析:

  1. 1. 定义函数 get_unique_fruits,接收一个列表作为参数;
  2. 2. 创建空列表 list_of_unique_fruits,用于存放去重后的结果;
  3. 3. 通过 set(fruits) 将列表转换为集合,利用集合的特性自动去除重复元素;
  4. 4. 遍历集合中的元素,逐个添加到空列表中;
  5. 5. 返回去重后的列表。
更简洁的集合用法

借助 Python 的内置函数,上述代码可以简化为一行:

代码语言:javascript
复制
fruits = ["苹果", "香蕉", "香蕉", "橙子", "橙子", "葡萄", "草莓"]
unique_fruits = list(set(fruits))
print(unique_fruits)
# 输出:['苹果', '香蕉', '橙子', '葡萄', '草莓'](顺序可能不同)

这种写法的逻辑与上一种完全一致,只是将 “转换为集合” 和 “转回列表” 两步合并。解读时可以从内到外:先执行 set(fruits) 去重,再用 list() 转换为列表。

注意:集合是无序的,因此转换后的列表顺序可能与原列表不同。如果需要保留原列表的元素顺序,这种方法不适用。

方法 2:通过迭代识别唯一值

另一种思路是手动遍历列表,只保留首次出现的元素。核心逻辑是:

  • • 创建一个空列表用于存储唯一值;
  • • 遍历原列表中的每个元素,若该元素不在唯一值列表中,则添加进去;
  • • 最终得到的列表即为去重结果(保留原顺序)。

下面是两种基于迭代的实现方式,先从详细版本开始:

代码语言:javascript
复制
fruits = ["西瓜", "西瓜", "桃子", "桃子", "梨"]

def get_unique_fruits(fruits):
    unique = []  # 存储唯一值的空列表
    for fruit in fruits:
        # 若元素已在unique中,跳过当前循环
        if fruit in unique:
            continue
        # 否则添加到unique中
        else:
            unique.append(fruit)
    return unique

print(get_unique_fruits(fruits))
# 输出:['西瓜', '桃子', '梨']

步骤解析:

  1. 1. 定义函数 get_unique_fruits,接收列表参数;
  2. 2. 创建空列表 unique
  3. 3. 遍历原列表中的每个元素fruit:
    • • 若 fruit 已在 unique 中,用 continue 跳过当前迭代;
    • • 若不在,则添加到 unique 中;
  4. 4. 循环结束后,unique 中即为去重且保留原顺序的元素。
更简洁的迭代写法

可以简化条件判断,减少代码行数:

代码语言:javascript
复制
fruits = ["西瓜", "西瓜", "桃子", "桃子", "梨"]

def get_unique_fruits(fruits):
    unique = []
    for fruit in fruits:
        # 直接判断元素是否不在unique中,是则添加
        if fruit not in unique:
            unique.append(fruit)
    return unique

print(get_unique_fruits(fruits))
# 输出:['西瓜', '桃子', '梨']

这种写法将条件从 “如果存在则跳过” 改为 “如果不存在则添加”,逻辑更直接,且同样保留原列表的元素顺序。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程拾光 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法 1:使用集合获取唯一元素
    • 更简洁的集合用法
  • 方法 2:通过迭代识别唯一值
    • 更简洁的迭代写法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档