2016-10-29 1 views
-1

Ich versuche, dieses Verständnis in der Liste zu erreichenPython: Verschachtelte Abwickeln in der Liste Verständnis

for y in range(depth): # this one works 
    mylist+=[x for x in s[y]] 

braucht diese Hilfe:

# s= [set() for _ in range(depth)] # or list of sets 
mylist=[x for x in s[y] for y in range(depth)] 
> y undefined (error - apologize for inexact error message) 

Ist es möglich, diese in der Liste Verständnis zu erreichen?

Hauptfrage endet hier.


Mehr zu den Fehlern,

Statt Syntaxfehler, bekomme ich auch name y not defined.

So versuchte ich y=0 vor der Liste Verständnis. Und es hat funktioniert! Kein Namensfehler mehr. Außer, es wurde nicht der Inhalt der Liste ausgedruckt, sondern einige schleichende Zahlen.

Auch das, was ich versuche zu tun ist etwas zu verletzen, Python scheint auch seltsam zu handeln. Wahrscheinlich ein Fehler.

+0

Es ist Kopieren-Fehler. Funktioniert auf meinem Computer mit dem richtigen Doppelpunkt. Aber mein Hauptproblem und meine Frage bleiben. Bitte sehen Sie meinen bearbeiteten Post. – theMobDog

+0

* obwohl die Schleifen in Ihrer Listen-Verstehensfolge in falscher Reihenfolge sind * –

+0

Ihr Listenverständnis-Beispiel löst keine 'SyntaxError' Ausnahme aus; Wie Ashwini versucht hat, darauf hinzuweisen, ist der einzige Fehler, dass Sie die Reihenfolge der "for" Loops durcheinander gebracht haben. –

Antwort

1

Sie suchen nach folgenden Kriterien:

mylist.extend([x for y in range(depth) for x in s[y]]) 

Die Ebenen eines Verständnisses sollte als die Schleife in der gleichen Reihenfolge angeordnet werden. Andernfalls würde der Interpreter for x in s[y] sehen, bevor er y von for y in range(depth) erzeugte.

+0

Dies löst meine Bufferfehler und Ausgabe. Es war eine komische 2 Tage Jagd nach Fehlern. Vielen Dank! – theMobDog

Verwandte Themen