Me estoy sumergiendo en Python y tengo una pregunta sobre la iteración foreach. Soy nuevo en Python y tengo algo de experiencia en C #. Así que me pregunto si hay alguna función equivalente en Python para la iteración de todos los elementos de mi colección, p. Ej.
pets = ['cat', 'dog', 'fish']
marks = [ 5, 4, 3, 2, 1]
o algo como esto.
Respuestas:
Por supuesto. Un bucle for.
fuente
for k,v in enumerate(pets):
etc.Me gusta esto:
De hecho, Python solo tiene
for
bucles de estilo foreach .fuente
También es interesante observar esto
Para iterar sobre los índices de una secuencia, puede combinar
range()
y de lalen()
siguiente manera:salida
Editar # 1: forma alternativa:
Al recorrer una secuencia, el índice de posición y el valor correspondiente se pueden recuperar al mismo tiempo utilizando la
enumerate()
función.salida
fuente
Para obtener una respuesta actualizada, puede crear una
forEach
función en Python fácilmente:También se podría adaptar esta a
map
,reduce
,filter
, y cualesquiera otras funciones de matriz de otros idiomas o precedencia Lo que quiere llevar más. Los bucles son lo suficientemente rápidos, pero la placa de la caldera es más larga queforEach
otras funciones. También puede extender la lista para tener estas funciones con un puntero local a una clase para poder llamarlas directamente en las listas también.fuente
Si bien las respuestas anteriores son válidas, si está iterando sobre un dict {key: value}, este es el enfoque que me gusta usar:
Por lo tanto, si quisiera hacer algo como stringify todas las claves y valores en mi diccionario, haría esto:
Esto evita cualquier problema de mutación al aplicar este tipo de iteración, lo que puede causar un comportamiento errático (a veces) en mi experiencia.
fuente
copy
de los diccionarios, para que pueda manipular el diccionario durante la iteración (aunque su copia será de todas las claves y valores antes de cualquier modificación) - comofor key, value in Dictionary.copy().items()
Para un dict podemos usar un bucle for para iterar a través de
index
,key
yvalue
:fuente