Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取筛选子列表项的线性索引_Python_List_Filter_List Comprehension - Fatal编程技术网

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编辑为您的观赏乐趣