python 中有没有办法在列表理解中遍历矩阵
Is there way in python to traverse a matrix in list comprehension
我有以下矩阵:
from random import randint
n, m = 5, 7
matrix = [[randint(-9, 9) for j in range(m)] for i in range(n)]
如何在没有自己的循环的情况下借助列表理解遍历此矩阵?
我的目标是获取小于 k
且位于奇数行的元素列表,通常我想将这段代码汇总到列表理解中:
sample = []
for i in range(n):
for j in range(m):
if matrix[i][j] < k and i % 2 != 0:
sample.append(matrix[i][j])
我试过了,但是没用:
sample = [elem for elem in row for row in matrix if elem < k]
我相信这与您的示例的作用相同,但在列表理解中:
import itertools
sample = [ matrix[i][j] for (i, j) in itertools.product(range(n), range(m)) if matrix[i][j] < k and i % 2 != 0 ]
我只是在做一些 Python 研究,偶然看到一些代码让我知道您可以在列表理解中使用嵌套 for 循环。有了这些知识,并且刚刚回答了这个问题,我想我应该感谢这个世界来写第二个答案。
我认为这个更好,因为 A) 它不使用必须导入的模块,B) 它更简单、更酷:
sample = [ matrix[i][j] for i in range(n) for j in range(m) if matrix[i][j] < k and i % 2 != 0 ]
所以 if
语句嵌套在列表解析中!谁知道呢
我有以下矩阵:
from random import randint
n, m = 5, 7
matrix = [[randint(-9, 9) for j in range(m)] for i in range(n)]
如何在没有自己的循环的情况下借助列表理解遍历此矩阵?
我的目标是获取小于 k
且位于奇数行的元素列表,通常我想将这段代码汇总到列表理解中:
sample = []
for i in range(n):
for j in range(m):
if matrix[i][j] < k and i % 2 != 0:
sample.append(matrix[i][j])
我试过了,但是没用:
sample = [elem for elem in row for row in matrix if elem < k]
我相信这与您的示例的作用相同,但在列表理解中:
import itertools
sample = [ matrix[i][j] for (i, j) in itertools.product(range(n), range(m)) if matrix[i][j] < k and i % 2 != 0 ]
我只是在做一些 Python 研究,偶然看到一些代码让我知道您可以在列表理解中使用嵌套 for 循环。有了这些知识,并且刚刚回答了这个问题,我想我应该感谢这个世界来写第二个答案。
我认为这个更好,因为 A) 它不使用必须导入的模块,B) 它更简单、更酷:
sample = [ matrix[i][j] for i in range(n) for j in range(m) if matrix[i][j] < k and i % 2 != 0 ]
所以 if
语句嵌套在列表解析中!谁知道呢