Ich arbeite am Euler Projekt, Problem 11, welches das Finden des größten Produktes aller möglichen Kombinationen von vier benachbarten Zahlen in einem Gitter beinhaltet. Ich habe die Zahlen in eine verschachtelte Liste verteilen und verwendet, um eine Liste Verständnis der relevanten Zahlen zu schneiden, wie folgt aus:Python Iterieren durch verschachtelte Liste mit Listenverständnis
if x+4 <= len(matrix[x]): #check right
my_slice = [int(matrix[x][n]) for n in range(y,y+4)]
... und so weiter für die anderen Himmelsrichtungen. So weit, ist es gut. Aber wenn ich zu den Diagonalen komme, werden die Dinge problematisch. Ich habe versucht, zwei Bereiche wie folgt zu verwenden:
if x+4 <= len(matrix[x]) and y-4 >=0:# check up, right
my_slice = [int(matrix[m][n]) for m,n in ((range(x,x+4)),range(y,y+4))]
Aber dies ergibt die folgende Fehlermeldung:
<ipython-input-53-e7c3ebf29401> in <listcomp>(.0)
48 if x+4 <= len(matrix[x]) and y-4 >=0:# check up, right
---> 49 my_slice = [int(matrix[m][n]) for m,n in ((range(x,x+4)),range(y,y+4))]
ValueError: too many values to unpack (expected 2)
Meine gewünschten Indizes für x, y-Werte von [0,0]
wäre ['0,0','1,1','2,2','3,3']
. Das scheint für die Verwendung der Enumerate-Funktion, um über eine Liste zu iterieren, nicht ganz anders, aber mir fehlt offensichtlich etwas.
P.S. Ich entschuldige mich für meine schreckliche variable Nomenklatur, ich bin ein work in progress.
Versuchen Sie, die Bereiche zu zippen? – JETM
Arbeiten Sie mit * arrays * oder * lists *? Sie sind nicht dasselbe. –
Danke für die Klarstellung, es ist tatsächlich eine verschachtelte Liste. Bearbeitet um zu reflektieren. – SgtStens