如何根据特定值拆分整数列表?例如,请参见以下示例:
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')
,但我想知道是否有任何优雅(更有效)的方式来做到这一点?
答案 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
拆分列表。