¿Existe una versión de Python de la siguiente if
- declaración else
en C++ o una declaración similar como esto:declaración del pitón de corta 'if-else'
int t = 0;
int m = t==0?100:5;
¿Existe una versión de Python de la siguiente if
- declaración else
en C++ o una declaración similar como esto:declaración del pitón de corta 'if-else'
int t = 0;
int m = t==0?100:5;
m = 100 if t == 0 else 5 # Requires Python version >= 2.5
m = (5, 100)[t == 0] # Or [5, 7][t == 0]
Tanto de las líneas anteriores dará lugar a la misma cosa.
La primera línea hace uso de la versión de Python de una "operador ternario" disponible desde la versión 2.5, aunque la documentación de Python refiere a él como Conditional Expressions
.
La segunda línea es un pequeño programa para proporcionar funcionalidad en línea en muchos (todos los importantes formas equivalentes) a ?:
se encuentran en muchos otros idiomas (como C y C++).
Documentación de Python - 5.11. Conditional Expressions
Encuentro esta abreviatura "m = (5, 100) [t == 0]" un poco rara en términos de posicionamiento de valor, pero funciona aunque –
t = 0
if t == 0:
m = 100
else:
m = 5
Bello es mejor que feo.
Explícito es mejor que implícito.
Simple es mejor que complejo.
De PEP 20.
O si realmente, realmente debe (funciona en Python> = 2.5):
t = 0
m = 100 if t == 0 else 5
-1. El operador ternario es * mucho menos feo * que un proceso largo, si se trata de operaciones simples como esta, bastante explícito, y * modo * más simple. Dogma es feo. – naught101
La construcción se está refiriendo a se llama el ternary operator. Python tiene una versión de la misma (desde la versión 2.5), así:
x if a > b else y
También hay:
m = t==0 and 100 or 5
Dado que 0 es un valor Falsy, podríamos escribir:
m = t and 5 or 100
Esto es equivalente a la primera .
posible duplicado de [python? (condicional/ternario) operador para asignaciones] (http://stackoverflow.com/questions/3091316/python-conditional-ternary-operator-for-assignments) –
posible duplicado de [Python Ternary Operator] (http: // stackoverflow. com/questions/394809/python-ternary-operator) – kay