【Python】剔除列表中的重复元素同时保持原始顺序

在Python中,要剔除列表中的重复元素同时保持原始顺序,可以使用以下几种方法:

1. 使用集合和列表推导式

def remove_duplicates(lst):
    seen = set()
    return [x for x in lst if not (x in seen or seen.add(x))]
original_list = [1, 2, 2, 3, 2, 1, 4, 5]
no_duplicates_list = remove_duplicates(original_list)
print(no_duplicates_list)  # 输出: [1, 2, 3, 4, 5]

这里,我们使用了一个集合seen来跟踪已经遍历过的元素。列表推导式会检查元素是否在seen集合中,如果不在,就将其添加到结果列表中,并将其添加到seen集合中。(说明:seen.add(x) 返回 None,布尔值为False)

2. 使用OrderedDict(Python 3.6+中普通字典也保持插入顺序)

在Python 3.6及以上版本中,普通字典已经是有序的,你可以直接使用字典,但在早期版本中需要使用collections.OrderedDict

from collections import OrderedDict
def remove_duplicates(lst):
    return list(OrderedDict.fromkeys(lst))
original_list = [1, 2, 2, 3, 2, 1, 4, 5]
no_duplicates_list = remove_duplicates(original_list)
print(no_duplicates_list)  # 输出: [1, 2, 3, 4, 5]

这里,OrderedDict.fromkeys(lst)会创建一个有序字典,其键是列表中的元素,并且自动去除了重复的键。然后我们将这个有序字典转换回列表。
在Python 3.7及以上,你可以直接使用字典:

def remove_duplicates(lst):
    return list(dict.fromkeys(lst))
original_list = [1, 2, 2, 3, 2, 1, 4, 5]
no_duplicates_list = remove_duplicates(original_list)
print(no_duplicates_list)  # 输出: [1, 2, 3, 4, 5]

以上两种方法都可以在保持列表顺序的同时剔除重复元素。选择哪一种取决于你的具体需求和Python版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值