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/循环。