删除连续重复的元素
数据处理中的一个常见任务是从列表中删除连续的重复项。一个简单的 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中文网其他相关文章!