gpt4 book ai didi

python - 无法使用带有 if 条件的列表理解从现有列表创建重复列表

转载 作者:行者123 更新时间:2023-11-30 22:12:10 25 4
gpt4 key购买 nike

我有一个包含重复元素的排序列表,例如

>>> randList = [1, 2, 2, 3, 4, 4, 5]
>>> randList
[1, 2, 2, 3, 4, 4, 5]

我需要创建一个列表来删除相邻的重复元素。我可以这样做:

>>>> dupList = []
for num in nums:
if num not in dupList:
dupList.append(num)

但我想通过列表理解来做到这一点。我尝试了以下代码:

>>> newList = []
>>> newList = [num for num in randList if num not in newList]

但我得到的结果就像 if 条件不起作用。

>>> newList
[1, 2, 2, 3, 4, 4, 5]

如有任何帮助,我们将不胜感激。谢谢!!

编辑1:鉴于我提供的数据,问题的措辞似乎确实令人困惑。我使用的 for 循环将删除所有重复项,但由于我事先对列表进行排序,因此在删除相邻重复项时这应该不成问题。

最佳答案

使用itertools.groupby是删除相邻(并且仅相邻)重复项的最简单方法,即使对于未排序的输入也是如此:

>>> from itertools import groupby
>>> [k for k, _ in groupby(randList)]
[1, 2, 3, 4, 5]

使用 OrderedDict 可以有效地删除所有重复项,同时保持出现的顺序。 。这也适用于有序和无序输入:

>>> from collections import OrderedDict
>>> list(OrderedDict.fromkeys(randList))
[1, 2, 3, 4, 5]

关于python - 无法使用带有 if 条件的列表理解从现有列表创建重复列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51190018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com