我在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
我不明白为什么它不起作用。
你能帮帮我吗?℃。
答案 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]]