Python 获取筛选子列表项的线性索引
相当具体的问题,谷歌/搜索很难回答。假设我有一个列表:Python 获取筛选子列表项的线性索引,python,list,filter,list-comprehension,Python,List,Filter,List Comprehension,相当具体的问题,谷歌/搜索很难回答。假设我有一个列表: 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、enu
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、enumerate的组合应该可以达到目的。你已经成功了一半。您可以使用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]]
请编辑您在问题中尝试的代码。您似乎对可能使用的python函数有一些想法-向我们展示您在一行之外尝试过的内容。如果无法使用列表理解返回相同的列表,这将创建一个新的list@Chris_Rands编辑为您的观赏乐趣