双循环python与矩阵

时间:2017-03-02 09:27:29

标签: python loops matrix

我在python3.6中有一个双循环的情况。

我有一个带字符串值的矩阵,矩阵中的所有位置都不满。所以我和juste''char有很多关系。我想取矩阵中每一行的第一个值。要做到这一点,我尝试了这样的双重理解列表:

matrix = data[1:,6:68]
price = [[int(matrix[i,j]) if j!='' for j in matrix[i][j] ] for i in matrix[i]]

但是当我运行它时,我收到了这个错误:

price = [[int(matrix[i,j]) if j!='' for j in matrix[i][j] ] for i in matrix[i]]
                                            ^
SyntaxError: invalid syntax

我不明白为什么它不起作用。

你能帮帮我吗?

℃。

2 个答案:

答案 0 :(得分:0)

这里的错误      [[int(matrix[i,j]) if j!='' for j in matrix[i][j] ] for i in matrix[i]]
int(matrix[i,j]) if j!='',然后是。{  matrix[i,j]其中,变量i是第一个列表理解的结果列表,因此会抛出以下错误。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not tuple

因此,

 [i for i in matrix] #gives each row of matrix!
[[j for j in i if j!=''][0] for i in matrix] #gives all elements in each row that is not null.

所以,

[[j for j in i if j!=''][0] for i in matrix] #first element of each row that isn't null!

示例IO:

>>> matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> [[j for j in i if j!=''][0] for i in matrix]
[1, 4, 7]

答案 1 :(得分:0)

通常在理解中,条件出现在迭代器之后。即。

matrix = data[1:,6:68]
price = [[int(matrix[i,j]) for j in matrix[i][j] if j!='' ] for i in matrix[i]]