Itérer une chaîne de format sur une liste

En Lisp, vous pouvez avoir quelque chose comme ceci:

(setf my-stuff '(1 2 "Foo" 34 42 "Ni" 12 14 "Blue"))
(format t "~{~d ~r ~s~%~}" my-stuff)

Ce qui serait le plus Pythonic moyen pour parcourir au cours de cette même liste? La première chose qui vient à l'esprit est:

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])

Mais qui se sent juste gênant pour moi. Je suis sûr qu'il ya une meilleure façon?


Bien, à moins que quelqu'un plus tard, offre un meilleur exemple, je pense que gnibbler la solution la plus belle\la plus proche, si elle ne peut pas être tout à fait aussi évident au premier abord comment il est ce qu'il fait:

mystuff = [1, 2, "Foo", 34, 42, "Ni", 12, 14, "Blue"]
for x in zip(*[iter(mystuff)]*3):
    print "{0} {1} {2}".format(*x)
En aparté, n'est-ce pas maladroit telle terriblement mot merveilleux? Il vient de regarde maladroit!
Il a l'air gêné dans la comparaison, mais ce n'est vraiment pas mauvais.
+1 parce que je n'ai aucune idée de si tu faisais référence à mon commentaire ou le code. Veuillez ne pas le préciser, l'ambiguïté est beaucoup plus amusant/intéressant!

OriginalL'auteur Wayne Werner | 2010-07-01