2011-06-09 13 views
17

estoy recibiendo este error al intentar resolver Proyecto Euler Problema 11 para parte de mi código aquí."objeto 'generador' no es subscriptable" 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 

que tenía que hacer la conversión de tipos, porque su todavía una cadena en la lista, pero no creo que eso es lo que está causando el problema.

se olvidó de mencionar pero funciona por un tiempo durante las pruebas, pero decide dejar al final, después de 340 pasa a través.

+3

Lo que se 'matrix'? –

+1

¿En qué línea se obtiene el error? –

+1

matriz es la lista multidimensional. Estoy consiguiendo el error en la línea 5. –

Respuesta

21

Sea cual sea x es un objeto generator, pero está intentando acceder a un elemento como si fuera una lista (x[p + 1]). Si pones x = list(x) en una línea antes de for y in x, esto debe solucionarlo.

+1

Nitpicking, pero Python no tiene arrays incorporados. Python tiene listas (que son una estructura de datos totalmente diferente, aunque con usos similares). –

+0

Cierto, gracias. :) Corregido. –

+5

¡Python tiene matrices! ¡Pero no están construyendo! Uno debe [import array] (http://docs.python.org/library/array.html). – jathanism

Cuestiones relacionadas