0

Encontré este código en Python para resolver un problema que pide retornar los elementos de una matriz en espiral en sentido horario

def spiralOrder(self, matrix):  
    return matrix and list(matrix.pop(0)) + self.spiralOrder(zip(*matrix)[::-1])

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]  
print (spiralOrder(self, matrix))

Pero no sé que parámetro debe ir en self. ¿Qué valor debo darle?

FJSevilla
  • 55,603
  • 7
  • 35
  • 58
  • Tu código es un método de instancia definido dentro de una clase , mírate el enlace de duplicado que agrega fedorqui para saber que es `self`. Si lo vas a usar en programación funcional elimina el `self` tanto en el argumento como en la llamada recursiva en `self.spiralOrder`. Es decir: `def spiralOrder(matrix): return matrix and list(matrix.pop(0)) + spiralOrder(zip(*matrix)[::-1])`. Por cierto, el código es válido para Python 2, no para Python 3 (`zip` no retorna una lista ). Se resuelve simplemente con `list(zip(*matrix))`. Un saludo. – FJSevilla Sep 08 '17 at 13:14
  • Muchas gracias. Realmente se hace más fácil si solo quito el self solo que como recien comienzo en python solo lo habia visto en clases y lo de python 2 y 3 no sabía que había esa diferencia. – Gustavo Alexander Carrillo Rue Sep 10 '17 at 00:54

0 Answers0