Python用列表中的值更改子集的列表

时间:2019-07-18 04:36:42

标签: 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]

1 个答案:

答案 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]