2017-03-02 142 views
2

我有一個python3.6雙循環的情況。矩陣的雙循環Python

我有一個帶有字符串值的矩陣,矩陣中的所有位置都不滿。所以我有許多立場與juste''字符。我想獲取矩陣中每行的第一個值。要做到這一點我已經嘗試了雙修真名單如下:

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.

+0

你能提供'data'的樣本數據嗎? – YOBA

+0

對於你的錯誤....... price = [[int(matrix [i,j])for j in matrix [i] [j] if j!=''] for i in matrix [i]]。 ......... –

+0

在這裏,對於我在矩陣[我]給出了一個列表,當你使用它作爲矩陣[我] [J]會拋出錯誤! –

回答

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] 
+0

謝謝你的完美。這對應我想要的! –

+0

如果你覺得答案適合你的問題,請接受它[顯示在此](http://stackoverflow.com/tour) –

+0

謝謝抱歉,時間延遲:-) –

0

通常在修真的條件來迭代後。即

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

在這裏,對於我在矩陣[我]給出了一個列表,當你使用它作爲矩陣[我] [j]會拋出錯誤! –