Die Iteration eines format-string eine Liste mit

In Lisp, Sie können so etwas wie dies:

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

Was wäre die Pythonic Weg zu Durchlaufen, die gleiche Liste? Das erste, was mir einfällt, ist:

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

Aber das fühlt sich einfach unangenehm zu mir. Ich bin mir sicher, dass es einen besseren Weg?


Gut, es sei denn, jemand höher bietet, ein besseres Beispiel, denke ich gnibbler die Lösung ist der schönste\am nächsten, auch wenn es vielleicht nicht ganz so offensichtlich auf den ersten, wie es tut, was es tut:

mystuff = [1, 2, "Foo", 34, 42, "Ni", 12, 14, "Blue"]
for x in zip(*[iter(mystuff)]*3):
    print "{0} {1} {2}".format(*x)
Nebenbei, ist das nicht umständlich so ein schrecklich wunderbares Wort? Es ist nur aussieht umständlich!
Es sieht umständlich im Vergleich, aber es ist nicht wirklich schlecht.
+1 weil ich keine Ahnung habe, wenn du damit auf meinen Kommentar oder den code. Bitte nicht klären, die Mehrdeutigkeit ist viel mehr unterhaltsam/interessant!

InformationsquelleAutor Wayne Werner | 2010-07-01

Schreibe einen Kommentar