Tengo una lista que estoy recorriendo con un bucle "for" y estoy ejecutando cada valor en la lista a través de una instrucción if. Mi problema es que estoy tratando de hacer que el programa haga algo si todos los valores en la lista pasan la sentencia if y, si no se aprueba, quiero que avance al siguiente valor de la lista. Actualmente está devolviendo un valor si un solo elemento en la lista pasa la instrucción if. ¿Alguna idea para que apunte en la dirección correcta?iterando a través de una lista con una instrucción if
Respuesta
Python le ofrece una gran cantidad de opciones para hacer frente a una situación así. Si tiene un código de ejemplo, podemos reducirlo para usted.
Una opción que podría tener en cuenta es el operador all
:
>>> all([1,2,3,4])
True
>>> all([1,2,3,False])
False
También puede comprobar la longitud de la lista filtrada:
>>> input = [1,2,3,4]
>>> tested = [i for i in input if i > 2]
>>> len(tested) == len(input)
False
Si está utilizando un constructo for
que pueda salga del ciclo antes si encuentra una prueba negativa:
>>> def test(input):
... for i in input:
... if not i > 2:
... return False
... do_something_with_i(i)
... return True
La función test
anterior arrojará False en el primer valor que sea 2 o menos, por ejemplo, mientras que devolverá True solo si todos los valores fueran mayores que 2.
Tiene que recorrer toda su lista y verificar el condición antes de tratar de hacer cualquier otra cosa con los datos, por lo que necesita dos bucles (o utilizar algunos integrados que hace el bucle para usted, como todos()). A partir de este teclado sin nada de lujos, http://codepad.org/pKfT4Gdc
def my_condition(v):
return v % 2 == 0
def do_if_pass(l):
list_okay = True
for v in l:
if not my_condition(v):
list_okay = False
if list_okay:
print 'everything in list is okay, including',
for v in l:
print v,
print
else:
print 'not okay'
do_if_pass([1,2,3])
do_if_pass([2,4,6])
Tal vez usted podría tratar con una declaración for ... else
.
for item in my_list:
if not my_condition(item):
break # one item didn't complete the condition, get out of this loop
else:
# here we are if all items respect the condition
do_the_stuff(my_list)
Siempre hay que tener cuidado si va a eliminar artículos de su lista, mientras que usted está tratando de iterar a través de él.
Si no va a eliminar a continuación, ayuda esto:
>>> yourlist=list("abcdefg")
>>> value_position_pairs=zip(yourlist,range(len(yourlist)))
>>> value_position_pairs
[('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4), ('f', 5), ('g', 6)]
>>> filterfunc=lambda x:x[0] in "adg"
>>> value_position_pairs=filter(filterfunc,value_position_pairs)
>>> value_position_pairs
[('a', 0), ('d', 3), ('g', 6)]
>>> yourlist[6]
'g'
ahora si value_position_pairs está vacía ya está. Si no, puede aumentar i en uno para ir al siguiente valor o repetir los valores fallidos utilizando su posición en el conjunto.
- 1. iterando a través de una lista de listas?
- 2. Marque si mousedown con una instrucción if?
- 3. iterando sobre una lista de tipos
- 4. Java: iterando a través de la lista de listas?
- 5. iterando a través de una gama de entradas en ksh?
- 6. Acceder a una variable fuera de una instrucción 'if'
- 7. Freemarker: una enumeración en una instrucción if
- 8. Ruby: Iterando a través de Constantes
- 9. ¿Usando '&&' como una abreviación de instrucción if?
- 10. iterando a través de una lista eliminando elementos, algunos elementos no se eliminan
- 11. Evaluación de una instrucción IF en VB.NET
- 12. ¿Doble salto de foreach con una instrucción "If"?
- 13. jQuery usando 'this' en una instrucción if
- 14. ¿Posible canalizar en una instrucción if?
- 15. dos sentencias IF vs una instrucción AND
- 16. Iterando a través de un objeto JSON
- 17. Iterando a través del Arraylist con clases ampliadas
- 18. cómo escribir una condición if dentro de una instrucción select?
- 19. Ruby: Nils en una instrucción IF
- 20. Creando una lista de meses iterando entre dos fechas en una lista (Python)
- 21. Acorte esta instrucción if en Razor a una línea
- 22. Perl equivalente a las comprensiones de la lista de Python con la instrucción if incrustada?
- 23. Usando una instrucción IF en una consulta MySQL SELECT
- 24. ¿Cómo se usa 'contains' en una instrucción if?
- 25. Usando un OR en una instrucción IF WinXP Batch Script
- 26. ¿Por qué dos? S en una instrucción IF al usar &&?
- 27. manera elegante de usar un rango usando una instrucción if?
- 28. DBNull if instrucción
- 29. If instrucción en C++
- 30. Implementando sentencias 'if' condicionales dentro de una instrucción LINQ 'where'
El código de ejemplo siempre nos ayuda a ayudarlo mejor. –
Publica tu código. – GWW
'ordenar' y compararlo con un código conocido, me viene a la mente, pero como han dicho los otros, publique un código para que podamos ver cómo se ve su lista. –