Wie kann ich ein Listenverständnis verwenden, um eine Liste in Python zu erweitern?

8

Ich habe keine Erfahrung mit Python und schreibe oft Code, der (vereinfacht) so aussieht:

%Vor%

Nachdem ich meinen Test bestanden habe, refactoriere ich nach

%Vor%

Aber nehmen wir an, es sieht ein wenig anders aus und meine Schleife sieht so aus:

%Vor%

wobei die doSomething Liste eine Liste zurückgibt. Was ist der pythischste Weg, dies zu erreichen? Offensichtlich würde das vorherige Listenverständnis eine Liste von Listen ergeben.

    
Eric Wilson 10.05.2011, 08:17
quelle

5 Antworten

4

Viel einfacher und sauberer mit Listenverständnis:

%Vor%     
Shubham Chaudhary 08.06.2017, 12:18
quelle
4

Meinst du sowas?

%Vor%

oder kürzerer Code (aber nicht optimal):

%Vor%

oder gleich:

%Vor%

Danke an @eyquem für den Hinweis (bei Verwendung von Python 2.x):

%Vor%     
eumiro 10.05.2011 08:19
quelle
2

Pythons direkter Platzhalteroperator ( += , verfügbar als iadd in operator -Modul) ist äquivalent zu .extend für die Liste. Kombiniere es mit reduce , um zu bekommen, was du willst.

%Vor%     
Imran 10.05.2011 08:29
quelle
2

Ich denke, die Antworten mit add oder iadd laufen in quadratischer Zeit, was wahrscheinlich nicht gut ist. Ich würde es versuchen:

%Vor%     
solrize 10.05.2011 21:26
quelle
0

Ich glaube nicht, dass es eine spezielle Syntax für diesen Fall gibt. Aber Sie könnten die for-Schleife kürzer machen:

%Vor%

Wenn Sie darauf bestehen, können Sie die funktionale Programmierung verwenden, um die Liste zu reduzieren:

%Vor%

Aber ich würde dieses Python nicht nennen, ich denke, es ist schwieriger zu lesen als eine for-Schleife.

    
maxy 10.05.2011 08:43
quelle

Tags und Links