【问题标题】:double loop python with matrix带矩阵的双循环python
【发布时间】:2017-03-02 09:27:28
【问题描述】:

我在 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

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

你能帮帮我吗?

C.

【问题讨论】:

  • 你能提供一个'data'的样本数据吗?
  • 到你的错误.......price = [[int(matrix[i,j]) for j in matrix[i][j] if j!='' ] for i在矩阵[i]]........
  • 这里 for i in matrix[i ] 给出一个列表,当你使用它作为 matrix[i][j] 时会抛出错误!!

标签: python loops matrix


【解决方案1】:

这里的错误 [[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]

【讨论】:

  • 如果您觉得答案适合您的问题,请采纳here
  • 抱歉耽搁了时间 :-)
【解决方案2】:

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

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

【讨论】:

  • 这里 for i in matrix[i ] 给出一个列表,当你使用它作为 matrix[i][j] 时会抛出错误!!
猜你喜欢
  • 2017-10-01
  • 2019-05-10
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
相关资源
最近更新 更多