根据特定值拆分整数列表

时间:2020-10-16 12:03:22

标签: python python-3.x

如何根据特定值拆分整数列表?例如,请参见以下示例:

inp = [1, 3, 4, 5, -999, 0, 0, 1, 3, 5, -999, 85, 82, 84]

outs = magic_function(inp)

>> [[1,3,4,5], [0,0,1,3,5], [85,82,84]] # expected output is like this

输出将是基于-999拆分的列表的列表。到目前为止,我使用for循环处理它或将其转换为字符串,然后使用str.split('-999'),但我想知道是否有任何优雅(更有效)的方式来做到这一点?

1 个答案:

答案 0 :(得分:0)

这将起作用:

from itertools import groupby

inp = [1, 3, 4, 5, -999, 0, 0, 1, 3, 5, -999, 85, 82, 84]

sep = -999
ret = [list(items) for key, items in groupby(inp, lambda x: x == sep) if not key]

print(ret)  # [[1, 3, 4, 5], [0, 0, 1, 3, 5], [85, 82, 84]]

我使用itertools.groupby拆分列表。