You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中高效提取列表唯一元素并保留原顺序?

保留原始顺序提取列表唯一元素的高效方法

方法一:利用Python 3.7+的有序字典特性(推荐)

Python 3.7及以后版本中,字典会保留键的插入顺序,dict.fromkeys()方法会以传入的可迭代对象元素作为键,自动跳过重复元素,最后将字典的键转为列表即可得到目标结果:

my_list = [3, 2, 1, 2, 4, 3]
unique_list = list(dict.fromkeys(my_list))
print(unique_list)  # 输出: [3, 2, 1, 4]

该方法时间复杂度为O(n),是目前最简洁高效的实现方式。

方法二:用集合跟踪已出现元素(兼容低版本Python)

如果需要兼容Python 3.7之前的版本,可通过遍历原列表+集合去重的方式实现,集合的in操作是O(1)时间复杂度,整体效率同样为O(n):

my_list = [3, 2, 1, 2, 4, 3]
seen = set()
unique_list = []
for item in my_list:
    if item not in seen:
        seen.add(item)
        unique_list.append(item)
print(unique_list)  # 输出: [3, 2, 1, 4]

原方法乱序的原因

你之前使用的set()方法,本质是基于哈希表实现的集合,它的元素是无序存储的(Python 3.7+虽会记录插入顺序,但集合的迭代顺序不保证与原列表一致),因此转成列表后顺序会被打乱。

内容的提问来源于stack exchange,提问作者user22022653

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:30:05