Kann die all-Funktion verschachtelt werden?

8

Ich habe eine Liste von Objekten namens Objekte . Jedes Objekt hat eine Eigenschaft state und eine Eigenschaft children , die eine weitere Liste von Objekten darstellt. Und jedes untergeordnete Objekt hat auch eine Eigenschaft mit dem Namen state . Was ich wissen möchte, ist, ob jeder Gegenstand und seine Kinder in den Zuständen glücklich oder fröhlich sind.

Ich habe das mit allen gemacht (nur die Zustände der Items analysiert):

%Vor%

Ich würde gerne wissen, welches der beste Weg ist, um dasselbe zu tun, nicht nur mit Dingen, sondern auch mit Kindern.

    
forvas 15.12.2014, 13:05
quelle

5 Antworten

5

Sie suchen hier nach einer Rekursion:

%Vor%

Wie @tobias_k darauf hingewiesen hat, sollte dies schneller sein, da es nur einmal auf Items iteriert:

%Vor%

Es ist zumindest lesbarer.

Für den Fall, dass Sie nur zwei Ebenen von Objekten haben, könnte ein simples für den Trick auch ausreichen.

%Vor%     
Benoît Latinier 15.12.2014, 13:07
quelle
2

Ich denke, das wäre der richtige Weg:

%Vor%     
Irshad Bhat 15.12.2014 13:17
quelle
1

Erster Schritt: Reduzieren Sie die Liste der Elemente:

%Vor%

Oder mit Python 3.4 +:

%Vor%

Und jetzt können Sie durch abgeflachte Elemente mit all(..) oder auf andere Art und Weise iterieren:

%Vor%     
Vladimir 15.12.2014 13:15
quelle
1

Rekursion ist dein Freund hier

%Vor%     
6502 15.12.2014 13:16
quelle
1

Dies wird wahrscheinlich am besten manuell gemacht.

%Vor%

Das Ändern des Generatorausdrucks, um damit zu arbeiten, ist möglich, macht es aber ein bisschen hacky.

%Vor%

Um Ihre Frage zu beantworten, ist es ja möglich, die all -Funktion zu verschachteln, und das ist, wie Sie es tun könnten, wenn Sie wirklich wollen.

    
jamylak 15.12.2014 13:20
quelle

Tags und Links