Python 使用列表中不断变化的值对列表进行子集化

标签 python list

我想从更大的列表中获取与先前值相比发生变化的值列表。我尝试通过循环更大的列表来创建列表,但我希望有更好的方法来做到这一点,因为我想节省在大列表上搜索的时间。

sublist= [largerList[0]]
previous = largerList[0]
for item in largerList:
    if item != previous:
        sublist.append(item)
        previous = item

如果

LargerList = [10,10,10,10,10,0,10,10,10,10,15,15,15,15,15,10,10,0,10,10,12,12,12,0]

我想要

sublist = [10,0,10,15,10,0,10,12,0]

最佳答案

您可以使用itertools.groupby以更少的代码高效地完成此操作。它仍然需要查看每一项。默认情况下,groupby 将按值分组,键将是组的值。因此,只需收集 key 即可:

from itertools import groupby

LargerList = [10,10,10,10,10,0,10,10,10,10,15,15,15,15,15,10,10,0,10,10,12,12,12,0]
sublists = [k for k, _ in groupby(LargerList)]

子列表:

[10, 0, 10, 15, 10, 0, 10, 12, 0]

关于Python 使用列表中不断变化的值对列表进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57087199/

相关文章:

python - Asyncio - 检查事件循环中是否具有特定参数的协程的方法?

python - 如果另一列是 NaN,如何替换列中的值?

Java 相当于 Kotlin 中的 arrayof()/listof()/setof()/mapof()

c# - 根据属性和重复总和列出不同的条目

python - 计算列表中连续真值的长度

python - 使用 Python 从命令行下载文件

javascript - 在 Scrapy 响应中执行内联 JavaScript

python - DataFrame.Replace(r'regex', regex=True) 不起作用

python - 如何制作一组列表

r - 将数据帧的一行转换为 R 中的简单向量