В Лиспе вы можете получить что-то вроде этого:
(setf my-stuff '(1 2 "Foo" 34 42 "Ni" 12 14 "Blue"))
(format t "~{~d ~r ~s~%~}" my-stuff)
Каким был бы самый Pythonic способ перебора этого же списка? Первое, что приходит на ум, это:
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])
Но мне просто неловко. Я уверен, что есть лучший способ?
Ну, если кто-то позже не предоставит лучший пример, я думаю, что решение gnibbler - самое лучшее \ самое близкое, хотя поначалу может быть не так очевидно, как оно делает то, что делает:
mystuff = [1, 2, "Foo", 34, 42, "Ni", 12, 14, "Blue"]
for x in zip(*[iter(mystuff)]*3):
print "{0} {1} {2}".format(*x)