2011-06-09 79 views
17

我在嘗試爲我的代碼的一部分解決Project Euler Problem 11時出現此錯誤。「'generator'object is not subcriptabletable」error

for x in matrix: 
    p = 0 
    for y in x: 
     if p < 17: 
      currentProduct = int(y) * int(x[p + 1]) * int(x[p + 2]) * int(x[p + 3]) 
      if currentProduct > highestProduct: 
       print(currentProduct) 
       highestProduct = currentProduct 
     else: 
       break 
      p += 1 

我不得不做類型轉換,因爲它仍然是一個字符串在列表中,但我不認爲這是什麼導致的問題。

忘了提,但它在測試過程中有一段時間工作,但決定在340通過後退出到最後。

+3

什麼是矩陣? – 2011-06-09 04:16:14

+1

你會在哪一行發生錯誤? – 2011-06-09 04:17:22

+1

矩陣是多維列表。我收到第5行的錯誤。 – 2011-06-09 04:30:31

回答

21

無論x是一個generator對象,但您試圖訪問一個元素,就像它是一個列表(x[p + 1])一樣。如果您在for y in x之前將x = list(x)放在一行上,則應該解決該問題。

+1

Nitpicking,但Python沒有內置數組。 Python有列表(這是一個完全不同的數據結構,雖然有相似的用途)。 – 2011-06-09 04:20:32

+0

真的夠了,謝謝。 :)更正。 – 2011-06-09 04:21:47

+5

Python確實有數組!但他們不是內建的!一個必須[導入數組](http://docs.python.org/library/array.html)。 – jathanism 2011-06-09 04:34:16

相關問題