all()
Die Python-Funktion all()
prüft, ob alle Elemente eines übergebenen Iterables wahr (truthy) sind. Gibt es mindestens ein Element, das als falsch (falsy) bewertet wird, liefert all()
den Wert False
zurück. Ist das Iterable leer, gibt die Funktion True
zurück. all()
eignet sich besonders zur Validierung von Bedingungen in Listen, Tupeln oder anderen iterierbaren Objekten und wird häufig in Kombination mit Generatorausdrücken oder Listen-Komprehension verwendet.
Inhaltsverzeichnis
Einführung
Die Funktion all()
gehört zu den eingebauten Funktionen in Python und ist ein essenzielles Werkzeug, wenn man prüfen möchte, ob alle Elemente eines Iterables “wahr” sind.
Die Funktion nimmt ein beliebiges Iterable (z.B. Liste, Tuple, Set, Generator, Dict-View) und liefert True
, wenn jedes Element truthy ist. Sobald ein Element False
liefert, bricht all()
die Iteration sofort ab und liefert False
.
Syntax
all(iterable)
iterable
Ein Objekt, über das iteriert werden kann.
Rückgabewert
True
: Wenn alle Elemente truthy sind oder wenn das Iterable leer ist.False
: Sobald irgendein Element falsy ist.
Besonderheiten
Kurzschlussverhalten (early exit)
Die Funktion all()
stoppt beim ersten falsy Element. Das spart Zeit und Speicher - insbesondere bei großen oder gestreamten Daten.
def all_positive(nums):
return all(n > 0 for n in nums)
Leeres Iterable
Ein leeres Iterable ergibt immer ein True
, da es keine Elemente gibt, die eine Bedingung nicht erfüllen könnten.
all([]) # True
all(x > 0 for x in []) # True
Iteratoren werden verbraucht
Bei Generatoren/Iteratoren “konsumiert” all()
Elemente bis zum ersten Falsy bzw. bis zum Ende. Danach ist der Iterator (teilweise/komplett) aufgebraucht.
iterator = (x > 0 for x in [1, 2, 0, 3])
all(iterator)
list(iterator)
Beispiele
Mit Listen
print(all([True, True, True])) # True
print(all([True, False, True])) # False
print(all([1, 2, 3])) # True
print(all([1, 0, 3])) # False
Mit Strings
print(all("Hello")) # True
print(all("")) # True
Mit verschiedenen Datentypen
print(all([1, "Text", True, 3.14])) # True
print(all([1, "", True])) # False (leerer String)
Mit Bedingungen
nums = [2, 4, 6, 8, 10]
print(all(x % 2 == 0 for x in nums))
passwords = ["Abc123!", "Test456@", "Password789#"]
print(all(len(pwd) >= 8 for pwd in passwords))
None
und falsy Werte
Folgende Werte liefern bei Anwendung mit all()
ein False
.
print(all([None])) # False
print(all([0])) # False
print(all([False])) # False
print(all([[]])) # False (leere Liste)
print(all([{}])) # False (leeres Dictionary)
print(all([""])) # False (leerer String)
Praktische Beispiele
Beispiel - Formularvalidierung
def validate_form(form_data):
validations = [
form_data.get("name") and len(form_data["name"] > 0),
form_data.get("email") and "@" in form_data["email"],
form_data.get("age") and form_data["age"] >= 18,
form_data.get("terms_accepted") == True
]
return all(validations)
form_data = {
"name": "Max Mustermann",
"email": "max@example.com",
"age": 30,
"terms_accepted": True
}
print(validate_form(form_data))
Beispiel - Datenqualitätsprüfung
def check_data_quality(dataset):
return all([
all(row["price"] > 0 for row in dataset),
all(row["quantity"] >= 0 for row in dataset),
all(row["id"] is not None for row in dataset)
])
products = [
{"id": 1, "price": 10.99, "quantity": 5},
{"id": 2, "price": 25.50, "quantity": 0},
{"id": 3, "price": 7.99, "quantity": 12}
]
print(check_data_quality(products))
Beispiel - Berechtigungsprüfung
def has_all_permissions(user_permissions, required_permissions):
return all(perm in user_permissions for perm in required_permissions)
user_perms = ["read", "write", "delete", "admin"]
required_perms = ["read", "write"]
print(has_all_permissions(user_perms, required_perms))
Beispiel - Komplexes Objekt
class Product:
def __init__(self, name, price, in_stock):
self.name = name
self.price = price
self.in_stock = in_stock
def print_action(self):
print(f"Do check: {self.name}")
def is_available(self):
self.print_action()
return self.in_stock and self.price > 0
products = [
Product("Laptop", 999.99, True),
Product("Mouse", 29.99, True),
Product("Keyboard", 49.99, True)
]
print(all(p.is_available() for p in products))
Do check: Laptop
Do check: Mouse
Do check: Keyboard
True