Testen, ob Liste leer ist

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Caldar
User
Beiträge: 46
Registriert: Sonntag 17. Mai 2009, 18:20

Wie kann ich am effektivsten testen, ob eine Liste leer ist, also keine Einträge enthält?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Code: Alles auswählen

In [39]: l = []

In [40]: if not l:
   ....:     True
   ....:
   ....:
Out[40]: True
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Leere Liste = False, also:

Code: Alles auswählen

>>> bool([])
False
Caldar
User
Beiträge: 46
Registriert: Sonntag 17. Mai 2009, 18:20

Beide Wege funktionieren bei mir nicht:

Ich muss dazusagen, dass die Liste in einer anderen Funktion, aber in derselben Klasse definiert wird:

Code: Alles auswählen

def csv_choice(self):
        self.csv_choicelist = []
Wenn ich nun in meiner aufgerufenen Funktion save_mapping die Existenz von Elementen in der Liste überprüfen will vermöge:

Code: Alles auswählen

def save_mapping(self):
        
        if not (self.csv_choicelist):
            print "leer!"
bekomme ich immer einen
AttributeError: csv_choicelist
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Die Klammern kannst du in Abfragen weglassen. Ich vermute einen Fehler in der Einrückung, sodass deine vermeintliche Methode vom Interpreter als Funktion außerhalb der Klasse erkannt wird. Paste doch mal bitte den kompletten Code auf http://paste.pocoo.org
BlackJack

@Caldar: Weist Du dem Attribut denn auch in der `__init__()` etwas zu? Falls nicht, muss natürlich `csv_choice()` vor `save_mapping()` mal aufgerufen werden, oder halt irgendeine andere Methode, die das Attribut an einen Wert bindet. Allerdings sollte man möglichst in der `__init__()` schon das komplette Objekt initialisieren.
Antworten