【问题标题】:Split list of integers based on specific value [duplicate]根据特定值拆分整数列表[重复]
【发布时间】:2021-01-30 22:58:48
【问题描述】:

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

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-loop 处理它或将其转换为字符串,然后使用 str.split('-999') 但我想知道是否有任何优雅(更有效)的方法来做到这一点?

【问题讨论】:

标签: python python-3.x


【解决方案1】:

这会起作用:

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 来拆分列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2019-05-06
    • 2018-06-22
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多