【发布时间】:2016-05-01 08:43:37
【问题描述】:
有没有办法在 python 中使用列表推导来过滤列表中的相邻重复项?
这是我的意思的一个例子:
>>> xs = [1,2,2,3]
>>> print added.reAdj(xs)
[1,2,3]
通过 SE 搜索发现 earlier inquiry 提出了一个类似但略有不同的问题:是否可以从列表中删除所有重复项,但没有明确要求涉及列表理解的解决方案。使用列表推导的动机特别遵循对their advantages over traditional for loops 的认可。用户建议使用 set() 函数或标准循环:
result = []
most_recent_elem = None
for e in xs:
if e != most_recent_elem:
result.append(e)
most_recent_elem = e
set() 建议无法满足任务,即删除不相邻的重复项,而循环有效但冗长。
似乎需要一种安全引用列表推导中的下一个元素的方法,如下所示。
[x for x in xs if x != **x.next()**]
有什么想法吗?
【问题讨论】:
-
这是否意味着
[1,2,2,2,2,3,3,3,4,5,6,6] --> [1,2,3,4,5,6]? -
@IronFist,你理解正确。这就是想要的结果。
-
@Achampion。感谢您的链接,但据我所知,张贴者并没有专门要求涉及列表理解的答案。我最初的问题帖子包括一个循环解决方案。
标签: python list list-comprehension