【发布时间】:2018-07-05 11:18:58
【问题描述】:
我有一个带有重复元素的排序列表,例如
>>> 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 循环将删除 all 重复项,但由于我事先对列表进行了排序,因此在删除相邻的重复项时应该没有问题。
【问题讨论】:
-
请注意,基于
for循环的解决方案将删除所有重复项,而不仅仅是相邻的。 -
@brunodesthuilliers 你是对的。但是既然列表反正是排序的,会不会有什么影响呢?
-
好吧,如果您的列表已排序,则根据定义,重复项确实是相邻的。
标签: python list if-statement list-comprehension