Seite 1 von 1

Testen, ob Liste leer ist

Verfasst: Montag 1. Juni 2009, 16:15
von Caldar
Wie kann ich am effektivsten testen, ob eine Liste leer ist, also keine Einträge enthält?

Verfasst: Montag 1. Juni 2009, 16:18
von Hyperion

Code: Alles auswählen

In [39]: l = []

In [40]: if not l:
   ....:     True
   ....:
   ....:
Out[40]: True

Verfasst: Montag 1. Juni 2009, 16:18
von OverNord
Leere Liste = False, also:

Code: Alles auswählen

>>> bool([])
False

Verfasst: Montag 1. Juni 2009, 17:23
von Caldar
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

Verfasst: Montag 1. Juni 2009, 17:25
von derdon
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

Verfasst: Montag 1. Juni 2009, 19:08
von 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.