Trong Lisp, bạn có thể có một cái gì đó như thế này:Lặp lại một chuỗi định dạng trên một danh sách
(setf my-stuff '(1 2 "Foo" 34 42 "Ni" 12 14 "Blue"))
(format t "~{~d ~r ~s~%~}" my-stuff)
Điều gì sẽ là cách Pythonic nhất để lặp qua đó cùng một danh sách? Điều đầu tiên bạn nghĩ đến là:
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])
Nhưng điều đó chỉ cảm thấy khó xử với tôi. Tôi chắc chắn có một cách tốt hơn?
Vâng, trừ khi ai đó sau cung cấp một ví dụ tốt hơn, tôi nghĩ rằng giải pháp gnibbler là đẹp nhất \ gần nhất, mặc dù nó có thể không khá rõ ràng lúc đầu như thế nào nó làm những gì nó làm:
mystuff = [1, 2, "Foo", 34, 42, "Ni", 12, 14, "Blue"]
for x in zip(*[iter(mystuff)]*3):
print "{0} {1} {2}".format(*x)
Là một sang một bên, không phải là khó xử như một từ tuyệt vời khủng khiếp? Nó chỉ * trông * vụng về! –
Có vẻ khó xử khi so sánh nhưng nó thực sự không phải là xấu. – ChaosPandion
+1 vì tôi không có đầu mối nếu bạn đang đề cập đến nhận xét hoặc mã của tôi. * Xin vui lòng * không làm rõ, sự mơ hồ là thú vị hơn nhiều/thú vị! –