statement - using if python
Condición múltiple ''o'' en Python (2)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo probar múltiples variables contra un valor? 21 respuestas
Tengo un pequeño problema de código y funciona con IDLE y no con Eclipse, ¿puedo escribir esto?
if fields[9] != (''A'' or ''D'' or ''E'' or ''N'' or ''R''):
en lugar de esto :
if fields[9] != ''A'' and fields[9] != ''D'' and fields[9] != ''E'' and fields[9] != ''N'' and fields[9] != ''R'':
Gracias.
Quieres el operador in
:
if fields[9] not in ''ADENR'':
...
O bien, puede utilizar any
if not any(fields[9] == c for c in ''ADENR''):
...
O, alternativamente, all
, que pueden tener un poco más de la misma forma que el original:
if all(fields[9] != c for c in ''ADENR''):
...
Como un aparte:
if x != (''A'' or ''B'' or ''C''):
es realmente lo mismo que decir:
if x != ''A'':
porque ''A'' or ''B'' or ''C''
evalúa como ''A''
(¡Pruébalo!). La razón es que con or
, python devolverá el primer valor "no falso" (o el último si todos son false). Como las cadenas no vacías no son false, la primera se devuelve.
Utilice not in
y una secuencia:
if fields[9] not in (''A'', ''D'', ''E'', ''N'', ''R''):
que prueba contra una tupla, que Python almacenará de manera conveniente y eficiente como una constante. También podrías usar un set literal:
if fields[9] not in {''A'', ''D'', ''E'', ''N'', ''R''}:
pero solo las versiones más recientes de Python ( Python 3.2 y más nuevas) reconocerán esto como una constante inmutable. Esta es la opción más rápida para el código más nuevo.
Debido a que este es un carácter, incluso podría usar una cadena:
if fields[9] not in ''ADENR'':