
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.