Hallo zusammen,
Angenommen ich möchte eine Funktion func mit dem Argument l (eine Liste) aufrufen, diese soll die Objekte a, b und sofern condition True ist auch c enthalten: was ist die beste Möglichkeit, dies zu erreichen?
Python
# Möglichkeit 1
func(l=[a, b, *((c,) if condition else ())])
# Möglichkeit 2
func(l=[a, b, c][:3 if condition else 2])
# Möglichkeit 3
l = [a, b]
if condition:
l.append(c)
func(l)
# Ein Traum wäre folgendes:
func(l=[a, b, c if condition])
Alles anzeigen
Die Effizienz ist in meinem Fall egal (einmalige Ausführung). 1 und 2 sind sehr (etwas zu) kompakt, Möglichkeit 3 wahrscheinlich besonders für Anfänger am einfachsten zu verstehen, aber drei Zeilen länger.
Möglichkeit Nummer 4 wäre IMHO die schönste, ist aber derzeit ein SyntaxError.
Hat noch jemand eine andere Idee?
Edit: in einer Antwort auf diese relevante Frage auf SO: https://stackoverflow.com/questions/2577…se-python-lists wird folgendes vorgeschlagen, das find ich aber sehr abstoßend:
Dann doch lieber Tuple-unpacking.