我想从更大的列表中获取一个值,该值与先前的值有所不同。我曾尝试通过遍历较大的列表来创建列表,但我希望有一种更好的方法来执行此操作,因为我想节省搜索大型列表的时间。
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]
答案 0 :(得分:2)
您可以使用itertools.groupby
来以更少的代码有效地做到这一点。它仍然需要查看每个项目。默认情况下,groupby
将按值分组,并且键将是组的值。因此,只需收集密钥:
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]