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

Python列表去重:保留唯一元素并维持原有顺序的解决方案

解决列表去重并保留原有顺序的问题

嘿,这事儿好办!要实现对列表去重同时维持原有顺序,咱们可以用两种简洁高效的方法,刚好适配你给出的数字列表场景:

方法1:通用自定义函数(适用于所有Python版本)

写一个复用性强的函数,用集合来跟踪已出现的元素,遍历原列表时只保留首次出现的元素:

def deduplicate_preserve_order(lst):
    seen = set()
    result = []
    for item in lst:
        if item not in seen:
            seen.add(item)
            result.append(item)
    return result

# 处理你的三个列表
list_1 = [4.5, 4.5, 4, 4, 4, 5, 5, 5]
list_2 = [6.5, 7, 7, 8, 8]
list_3 = [14.5, 15, 15, 15.5]

list_1 = deduplicate_preserve_order(list_1)
list_2 = deduplicate_preserve_order(list_2)
list_3 = deduplicate_preserve_order(list_3)

print(list_1)  # 输出: [4.5, 4, 5]
print(list_2)  # 输出: [6.5, 7, 8]
print(list_3)  # 输出: [14.5, 15, 15.5]

这个函数的逻辑很清晰:seen集合用来快速判断元素是否已经出现过(集合查询是O(1)时间复杂度,效率很高),遍历过程中只把首次出现的元素加入结果列表,完美满足你的需求。

方法2:利用Python 3.7+的字典特性(更简洁)

从Python 3.7开始,字典会保留插入顺序,所以咱们可以用dict.fromkeys()方法一键去重,它会自动把列表元素作为字典的键(键是唯一的),然后再转回列表即可:

list_1 = [4.5, 4.5, 4, 4, 4, 5, 5, 5]
list_2 = [6.5, 7, 7, 8, 8]
list_3 = [14.5, 15, 15, 15.5]

list_1 = list(dict.fromkeys(list_1))
list_2 = list(dict.fromkeys(list_2))
list_3 = list(dict.fromkeys(list_3))

print(list_1)  # 输出: [4.5, 4, 5]
print(list_2)  # 输出: [6.5, 7, 8]
print(list_3)  # 输出: [14.5, 15, 15.5]

这个方法代码更短,适合快速实现,而且你的列表元素都是可哈希的数字,完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:43:11