¿Cuál es la mejor manera de establecer un índice de inicio al iterar una lista en Python. Por ejemplo, tengo una lista de los días de la semana: domingo, lunes, martes, ... Sábado, pero quiero repetir la lista a partir del lunes. ¿Cuál es la mejor práctica para hacer esto?Índice de inicio para iterar la lista de Python
Respuesta
Puede utilizar slicing:
for item in some_list[2:]:
# do stuff
Esto iniciará en el tercer elemento y repetir hasta el final.
Esto es exactamente lo que estaba buscando. ¡Gracias! –
¿No es esto ineficaz para listas grandes? Creo que esta operación de sector debe copiar los elementos de la lista a los que se hace referencia en una nueva lista. – UndeadKernel
Sí, esto es ineficaz para listas grandes. Ver gnibblers respuesta a continuación para una solución que no copia. –
Puede siempre bucle que utiliza un índice contrarrestar el bucle estilo convencional C:
for i in range(len(l)-1):
print l[i+1]
Siempre es mejor seguir el "bucle en cada elemento de" estilo porque eso es lo normal para hacer, pero si se interpone en tu camino, solo recuerda que el estilo convencional también es compatible, siempre.
islice
tiene la ventaja de que no necesita copiar parte de la lista
from itertools import islice
for day in islice(days, 1, None):
...
Si lo que desea es imprimir desde Monday
en adelante, puede utilizar list
's index
método para encontrar la posición donde "Lunes" está en la lista, e iterar desde allí como se explica en otras publicaciones. Usando list.index
le ahorra la codificación dura el índice para "Lunes", que es una fuente potencial de error:
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
for d in days[days.index('Monday'):] :
print d
Si desea "envolvente" y efectivamente gire la lista para comenzar con el lunes (en lugar de sólo cortar los artículos antes del lunes):
dayNames = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday', ]
startDayName = 'Monday'
startIndex = dayNames.index(startDayName)
print (startIndex)
rotatedDayNames = dayNames[ startIndex: ] + dayNames [ :startIndex ]
for x in rotatedDayNames:
print (x)
Aquí es un generador de rotación que no necesita hacer una copia deformada de la secuencia de entrada ... puede ser útil si la secuencia de entrada es mucho mayor que 7 artículos .
>>> def rotated_sequence(seq, start_index):
... n = len(seq)
... for i in xrange(n):
... yield seq[(i + start_index) % n]
...
>>> s = 'su m tu w th f sa'.split()
>>> list(rotated_sequence(s, s.index('m')))
['m', 'tu', 'w', 'th', 'f', 'sa', 'su']
>>>
stdlib te conectará hijo!
#!/usr/local/bin/python2.7
from collections import deque
a = deque('Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split(' '))
a.rotate(3)
deque(['Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday'])
- 1. Colón (:) en Python lista índice
- 2. Python Plantilla Django: Iterar a través de la lista
- 3. Iterar una lista con índices en Python
- 4. índice de lista como en Python
- 5. python - obtener lista de tuplas primer índice?
- 6. índice del elemento de la lista de Python máxima
- 7. Groovy, cómo iterar una lista con un índice
- 8. obtener índice de caracteres en la lista de Python
- 9. Primer índice de la lista de Python mayor que x?
- 10. ¿Cuál es la forma más eficiente de iterar a través de una lista en python?
- 11. Iterar la lista de objetos en Ibatis
- 12. JSTL iterar sobre la lista de objetos
- 13. IndexError: lista de índice fuera de rango y python
- 14. Asir una parte de la lista <Item> por índice de inicio y final
- 15. Python: IndexError: lista de índice fuera de rango
- 16. Cuál es la diferencia entre 'índice' e 'índice de lista'
- 17. Python: iterar sobre la lista de artículos de diccionario vs sobre la eficiencia
- 18. ¿Índice de lista negativa?
- 19. Python es lento al iterar sobre una lista grande
- 20. xsl iterar por la lista del alfabeto
- 21. Cómo iterar sobre una lista repitiendo cada elemento en Python
- 22. forma concisa para eliminar elementos de la lista por el índice en Python
- 23. Python verifique el primer y último índice de una lista
- 24. $ .each() índice número de inicio en jQuery
- 25. forma eficiente de iterar sobre la lista de archivos
- 26. Informe de Jasper iterar sobre la lista de matriz
- 27. ¿Podemos usar índice como índice de matriz para acceder a la lista <T>?
- 28. Python beautifulsoup iterar sobre la tabla
- 29. java - iterar una lista vinculada
- 30. iterar a través de la lista y manejar StopIteration en Python bellamente
hacer lo que desea para recorrer hasta el sábado, o quieres que se ajuste alrededor de impresión y el domingo pasado? – juanchopanza
Solo quería seguir hasta el sábado. Hasta ahora no me había dado cuenta de que puedes usar el corte en listas de Python. –
¿Existe alguna solución que también trate con generadores/iterables y no solo con listas? ¿O listas realmente grandes? –