相当具体的问题很难谷歌/搜索。假设我有一个列表列表:
lists = [[30,34,0,0],[455,0,0],[0,509,0,0,0,0,444]]
如何使用以下顺序操作返回列表列表:
预期产出:
[[0,1],[2],[3,4]]
第一部分很容易通过列表理解获得:
lists_no_zeros = [[value for value in row if value != 0] for row in lists]
列表推导,zip,枚举的某些组合应该可以解决问题..
答案 0 :(得分:4)
你到了一半。您可以使用itertools.count()
获取索引:
>>> from itertools import count
>>> c = count()
>>> lists = [[30,34,0,0],[455,0,0],[0,509,0,0,0,0,444]]
>>> [[next(c) for value in sublist if value] for sublist in lists]
[[0, 1], [2], [3, 4]]