Skip to content

Bedingte Ausdrücke in Python

Python

Python hat bedingte Ausdrücke (manchmal auch als „ternärer Operator“ bezeichnet). Sie können eine Operation wie eine if-Anweisung in einer Zeile mit bedingten Ausdrücken schreiben.

Dieser Artikel hat folgenden Inhalt.

  • Grundlagen bedingter Ausdrücke
  • if … elif … else … durch bedingte Ausdrücke
  • Hören Sie Verständnisse und bedingte Ausdrücke auf
  • Lambda-Ausdrücke und bedingte Ausdrücke

Siehe den following Artikel für die if-Anweisung.

Grundlagen bedingter Ausdrücke

In Python wird der bedingte Ausdruck wie folgt geschrieben.

Zuerst wird die Bedingung ausgewertet. Wenn die Bedingung wahr ist, WIRD X ausgewertet und ihr Wert zurückgegeben, und wenn die Bedingung falsch IST, WIRD Y ausgewertet und ihr Wert zurückgegeben.

Wenn Sie den Wert durch die Bedingung umschalten möchten, beschreiben Sie einfach jeden Wert so, wie er ist.

a = 1
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# odd

a = 2
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# even

Wenn SIE sterben Operation durch sterben Bedingungen umschalten möchten, beschreiben Sie jeden Ausdruck.

a = 1
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 3

a = 2
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 4

Ein Ausdruck, der keinen Wert zurückgibt (ein Ausdruck, der None zurückgibt), ist ebenfalls akzeptabel. Jeder Ausdruck wird abhängig von der Bedingung ausgewertet und ausgeführt.

a = 1
print('even') if a % 2 == 0 else print('odd')
# odd

Das obige Beispiel entspricht dem following Code, der in der if-Anweisung geschrieben ist.

a = 1

if a % 2 == 0:
    print('even')
else:
    print('odd')
# odd

Sie können auch mehrere Bedingungsausdrücke mit und oder verketten.

a = -2
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# negative and even

a = -1
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# positive or odd

if … elif … else … durch bedingte Ausdrücke

Indem Sie bedingte Ausdrücke kombinieren, können Sie eine Operation wie if … elif … else … in einer Zeile schreiben.

X if condition1 else Y if condition2 else Z

Es ist jedoch schwer zu verstehen, daher ist es möglicherweise besser, es nicht oft zu verwenden.

a = 2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# positive

a = 0
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# zero

a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative

Die folgenden zwei Interpretationen sind möglich, aber es wird wie die erstere (1) verarbeitet.

1. X if condition1 else (Y if condition2 else Z)
2. (X if condition1 else Y) if condition2 else Z

Im following Beispielcode WIRD der erste Ausdruck als Zweiter statt als Dritter Ausdruck betrachtet.

a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative

result = 'negative' if a < 0 else ('positive' if a > 0 else 'zero')
print(result)
# negative

result = ('negative' if a < 0 else 'positive') if a > 0 else 'zero'
print(result)
# zero

Hören Sie Verständnisse und bedingte Ausdrücke auf

Durch die Verwendung von bedingten Ausdrücken in Listenverständnissen kann die Operation durch die Bedingung auf die Elemente der Liste angewendet werden.

l = ['even' if i % 2 == 0 else i for i in range(10)]
print(l)
# ['even', 1, 'even', 3, 'even', 5, 'even', 7, 'even', 9]
l = [i * 10 if i % 2 == 0 else i for i in range(10)]
print(l)
# [0, 1, 20, 3, 40, 5, 60, 7, 80, 9]

Im following Artikel FINDEN SIE Notebooks zu Listenverständnissen.

Lambda-Ausdrücke und bedingte Ausdrücke

Bedingte Ausdrücke sind auch nützlich, wenn Sie Operationen wie die if-Anweisung in Lambda-Ausdrücken anwenden möchten.

get_odd_even = lambda x: 'even' if x % 2 == 0 else 'odd'

print(get_odd_even(1))
# odd

print(get_odd_even(2))
# even

Im Beispiel wird der Name dem Lambda-Ausdruck der Einfachheit halber zugewiesen, aber es WIRD in PEP8 nicht empfohlen.

Weitere Informationen zu Lambda-Ausdrücken finden Sie im following Artikel.