Python:嵌套列表理解中的过滤

Python:嵌套列表理解中的过滤,python,list-comprehension,Python,List Comprehension,例如,我有以下列表: matrix = [['.', 'W', '.'], ['.', 'W', '.'], ['W', '.', '.']] 我想要一个包含所有行、列和索引的列表 在中,它们显示了如何为单个列表执行此操作 但是,我想为嵌套列表执行此操作。有不止一个这样的例子 这对我来说很有用: l = [[(i,j) for j,el in enumerate(row) if el == 'W'] for i,row in enumerate(

例如,我有以下列表:

 matrix = [['.', 'W', '.'], 
           ['.', 'W', '.'],
           ['W', '.', '.']]
我想要一个包含所有行、列和索引的列表

在中,它们显示了如何为单个列表执行此操作

但是,我想为嵌套列表执行此操作。有不止一个这样的例子

这对我来说很有用:

l = [[(i,j) for j,el in enumerate(row) if el == 'W'] for i,row in enumerate(matrix)]
flat_list = [item for sublist in l for item in sublist]

>> [(0, 1), (1, 1), (2, 0)]

但是,我如何使用一个列表理解语句来执行此操作?

除了在一行中执行之外:

[(i, j) for i, row in enumerate(matrix) for j, el in enumerate(row) if el == 'W']
#[(0, 1), (1, 1), (2, 0)]
您还可以使用
numpy

import numpy as np
list(zip(*np.where(np.array(matrix)=='W')))
#[(0, 1), (1, 1), (2, 0)]

看起来您的代码目前运行正常,您正在寻求改进。一般来说,这些问题对本网站来说过于固执己见,但你可能会在网站上找到更好的运气。记住阅读,因为他们比这个网站更严格。@PaulRoub也许我问错了问题。我在从zipa那里寻找答案。我对列表理解的语法理解不够。谢谢,我对列表理解的语法理解不够。我使用%%timeit运行它,列表理解率为1.36µs±7.2 ns/循环,而使用numpy时,列表理解率为4.55µs±12.9 ns/循环。