En Lisp, puede tener algo como esto:iterar una cadena de formato sobre una lista
(setf my-stuff '(1 2 "Foo" 34 42 "Ni" 12 14 "Blue"))
(format t "~{~d ~r ~s~%~}" my-stuff)
¿Cuál sería la forma más Pythonic para repetir la misma lista? Lo primero que me viene a la mente es:
mystuff = [1, 2, "Foo", 34, 42, "Ni", 12, 14, "Blue"]
for x in xrange(0, len(mystuff)-1, 3):
print "%d %d %s" % tuple(mystuff[x:x+3])
Pero eso me parece incómodo. Estoy seguro de que hay una mejor manera?
Bueno, a menos que alguien más adelante proporciona un mejor ejemplo, creo que la solución de gnibbler es el más bonito \ cercano, aunque puede no ser tan evidentes en un primer momento cómo hace lo que hace:
mystuff = [1, 2, "Foo", 34, 42, "Ni", 12, 14, "Blue"]
for x in zip(*[iter(mystuff)]*3):
print "{0} {1} {2}".format(*x)
Como un aparte, ¿no es incómoda una palabra tan terriblemente maravillosa? ¡Simplemente * parece * incómodo! –
Parece incómodo en comparación, pero realmente no es tan malo. – ChaosPandion
+1 porque no tengo idea de si te referías a mi comentario o al código. * Por favor * no aclare, ¡la ambigüedad es mucho más entretenida/interesante! –