2017-03-13 9 views
-1

Anfänger Frage.Erstellen Sie leere Listennamen mit einer Schleife

Ich möchte mehrere leere Listen erstellen und benennen. Derzeit ich ihm das narrensicher, aber umständliche Art und Weise tue,

size_list=[] 
type_list=[] 
floor_list=[] 

Ich versuche es weniger umständlich zu tun,

for item in ['size', 'type']: 
    item+'_list'=[] 

dies jedoch in den folgenden Fehlern führt,

item+'_list'=[] 
    ^
SyntaxError: can't assign to operator 

Kann dies leicht behoben werden, oder soll ich eine andere Methode verwenden, um leere Listen mit Namen zu erstellen?

+0

"Kann dies leicht behoben werden?" Nennen Sie sie einfachere Namen wie 'size',' types' und 'floors' :) –

+0

Ha, ya ok. Aber ich möchte den "_list" -Teil hinzufügen. – LucSpan

+1

'size_list, type_list, floor_list = [], [], []' ist das was du willst? –

Antwort

4

Wenn Sie viele Daten in separaten Variablen verfolgen müssen, verlassen Sie sich nicht auf verwandte Variablennamen. Was macht dein Code mit all diesen Variablen, nachdem du sie definiert hast? Verwenden Sie ein Wörterbuch:

datalists = dict() 
for item in ['size', 'type']: 
    datalists[item] = [] 

Nachtrag: Durch ein Wörterbuch verwenden, haben Sie eine Variable alle Listenwerte enthalten (was auch immer sie sind) für Ihre verschiedenen Etiketten. Aber vielleicht (nach Ihrer Wahl der Namen zu urteilen) sollen die Werte in den entsprechenden Listenpositionen zusammenpassen. Zum Beispiel ist size_list[0] die Größe des Elements mit dem Typ type_list[0] usw.? In diesem Fall wäre ein weitaus besseres Design, jedes Element als einzelnes Tupel, Dict oder Objekt einer benutzerdefinierten Klasse darzustellen und eine einzige Liste aller Ihrer Objekte zu haben.

Thing = namedtuple("Thing", ['size', 'type', 'floor']) 
spoon = Thing(size=33, type='spoon', floor='green') 

things = [] 
things.append(spoon) 

Tupel (benannt oder nicht) können nicht geändert werden, daher ist dies möglicherweise nicht das, was Sie benötigen. Ist dies der Fall, verwenden Sie anstelle eines Tupels ein Wörterbuch oder schreiben Sie eine einfache Klasse.

+0

Ja, tatsächlich 'x_list [i]' entspricht 'y_list [i]' für jedes 'x, y in ['size', 'type', ..., 'floor'], so dass x! = y' und' i = 0 , 1, ..., 3000'. Jedes 'i' steht für eine Immobilienanzeige. Letztendlich würde ich gerne eine Tabelle mit jedem Apartment 'i' in einer Reihe und als Spalten' ['size', 'type', ..., 'floor'] 'erstellen. Nicht sicher, ob Ihr Nachtrag dazu passt? – LucSpan

+0

Es tut. Erstellen Sie ein Tupel oder ein Wörterbuch (oder Objekt einer benutzerdefinierten 'Apartment'-Klasse) für jedes Apartment. Anders ausgedrückt: Denken Sie darüber nach, wie Sie ** eine ** Wohnung darstellen würden, dann machen Sie einfach eine Liste von ihnen. – alexis

+0

Danke! Ich werde nachdenken. – LucSpan

Verwandte Themen