2017-02-03 1 views
0

Ich habe die folgende Liste, die sagen, dass ich irgendwie verarbeiten will, und dann aus den Elementen drucken:Python 2.7: Wie mehrere Iterationen einer Schleife vermeiden verwenden

mylist = [1,2,3,4,5,6] 
def increment_list(l, amount): 
    return [x + amount for x in l] 

def print_incremented_list(l): 
    for item in l: 
     print(item) 

l = increment_list(mylist, 1) 
print_incremented_list(l) 

einen anderen Weg, dies wäre zu schreiben

Das Problem, das ich mit dem oben genannten habe, ist, dass die Funktionsaufrufe ineinander verschachtelt sind, was ein bisschen Komplexität hinzufügt. Ich finde es einfacher zu lesen, wenn sie auf separate Zeilen gesetzt werden, aber das mag meine Präferenz sein.

Das Hauptproblem ist, dass beiden Ansätze leiden zweimal durch die Liste zu gehen, gibt es eine Möglichkeit, dies zu nisten, ohne in einer einzigen Funktion all solche, die Funktionalität zu vermeiden, wie

def increment_list(l, amount): 
    incremented_list = [] 
    for a in l: 
     incremented_list.append(a+amount) 
     print(a+amount) 
    return incremented_list 
+0

Ja, ich habe es falsch geschrieben, danke, dass Sie darauf hingewiesen haben – Har

Antwort

3

Sie können gehen Sie durch die Liste vermeidet zweimal durch einen Generator statt einer Liste mit (beachten Sie die runden Klammern anstelle der viereckigen):

def increment_list(l, amount): 
    return (x + amount for amount in l) 

Damit wird die Funktionalität sauber getrennt, sondern nur ein durch~~POS=TRUNC durch die Liste wird getan werden.

+0

Würde das funktionieren, wenn Sie mehrere Funktionen hätten, die Schleife zu verarbeiten und nicht nur zwei? d. h. inkrementiere_liste, mehrfache_liste, teile_liste, druckliste – Har

+1

Ja. [Füllung] – Amadan

+0

Amadan können Sie Ihre Antwort auf mehrere Stufen der Verarbeitung bitte erweitern? – Har

Verwandte Themen