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