首页 >后端开发 >Python教程 >如何有效地从Python列表中删除连续的重复元素?

如何有效地从Python列表中删除连续的重复元素?

Patricia Arquette
Patricia Arquette原创
2024-12-01 09:37:09651浏览

How Can I Efficiently Remove Consecutive Duplicate Elements from a Python List?

删除连续重复的元素

数据处理中的一个常见任务是从列表中删除连续的重复项。一个简单的 Python 实现可能是:

list = [1,1,1,1,1,1,2,3,4,4,5,1,2]
i = 0

while i <p>这种方法会删除重复的元素,从而产生类似 [1, 2, 3, 4, 5, 1, 2] 的输出。</p><p><strong>消除值连续重复的元素</strong></p><p>但是,一个改进的目标是消除其值连续重复的整个元素,导致输出如 [2, 3, 5, 1, 2]。之前的方法可以修改:</p><pre class="brush:php;toolbar:false">list = [1,1,1,1,1,1,2,3,4,4,5,1,2]
i = 0
dupe = False

while i <p>虽然功能强大,但可以简化此方法。</p><p><strong>更优雅的解决方案</strong></p><p>Python 提供了更多用于列表操作的表达工具。使用 itertools.groupby:</p><pre class="brush:php;toolbar:false">L = [1,1,1,1,1,1,2,3,4,4,5,1,2]
from itertools import groupby
[key for key, _group in groupby(L)]

这会产生所需的输出:[1, 2, 3, 4, 5, 1, 2]。

对于任务的第二部分:

[k for k, g in groupby(L) if len(list(g)) <p>这使用 groupby 对连续的重复项进行分组,并过滤​​掉具有多个元素的组,从而有效地删除重复的元素。</p><p>如果需要,您可以使用生成器表达式来避免创建临时列表:</p><pre class="brush:php;toolbar:false">[k for k, g in groupby(L) if sum(1 for i in g) 

以上是如何有效地从Python列表中删除连续的重复元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn