2016-04-21 8 views
0

Ich möchte nur einige Bereiche von Listen abhängig von der Eingabe deklarieren.Deklaration der dynamischen Liste mit for-Schleife in Python

Zum Beispiel, wenn ich den Eingang als 4 geben, würde ich 4 Listen erwarten wie

list1 = [] 
list2 = [] 
list3 = [] 
list4 = [] 

Ich habe versucht, diese

for i in range (1,4): 
    list(%d) %i= [] 

Aber seine nicht funktioniert.

+2

Warum glauben Sie, diese brauchen? Sie können nur eine Liste von Listen erstellen. Oder ein Diktat von Listen, wenn Sie den Listen Namen geben wollen. –

+0

Siehe auch http://stackoverflow.com/questions/14241133/how-can-i-create-lists-from-a-list-of-strings –

Antwort

0

Ich stimme mit PM-2ring überein, dass in den meisten Kontexten eine Liste von Listen oder ein Diktat angemessener wäre.

d = {} 
for i in range(1,4): 
    d['list%s' % i] = [] 

oder

l = [[] for x in range(1,4)] 

Aber die Frage zu beantworten tatsächlich in Fall gebeten, dies ist eine der sehr seltenen Fälle, in denen es das Richtige ist auch mit mit allen Problemen zu tun assoziiert dynamische Erstellung von Variablen (Wartbarkeit, Zugriff, Bereinigung von Benutzereingaben usw.).

Sie sollten wahrscheinlich nichts von dem Folgenden tun, wenn es sich um neue Informationen für Sie handelt.

Es hängt vom Kontext ein wenig ab. Wenn Sie sie in ein Objekt sind eingefügt wäre es:

a = classA() 

for i in range(1,4): 
    setattr(a, 'list%s' % i, []) 

Wenn versucht, eine globale var zu erstellen:

for i in range(1,4): 
    globals()['list%s' % i] = [] 
+0

Kann jemand einen Kommentar hinzufügen, warum dies abgelehnt wird? Ich nehme an, dass es auf eine fundamentale Art falsch ist, die ich nicht sehe. – nephlm

+1

Die Verwendung von 'globals' oder' setattr 'zum Erstellen dynamischer Attribute ist nie eine gute Idee. –

+0

Wenn Sie das 'globals()' Beispiel entfernen, dann könnten einige der Down-Wähler ihre Stimmen umkehren ... –

Verwandte Themen