Другие замечательные ответы и комментарии хорошо объясняют роли распаковки аргументов и zip () .
Как говорят Игнасио и ujukatzel , вы передаете zip()
три ссылки на один и тот же итератор, а zip()
составляет 3 кортежа целых чисел - по порядку - из каждого ссылка на итератор:
1,2,3,4,5,6,7,8,9 1,2,3,4,5,6,7,8,9 1,2,3,4,5,6,7,8,9
^ ^ ^
^ ^ ^
^ ^ ^
А так как вы просите более подробный пример кода:
chunk_size = 3
L = [1,2,3,4,5,6,7,8,9]
# iterate over L in steps of 3
for start in range(0,len(L),chunk_size): # xrange() in 2.x; range() in 3.x
end = start + chunk_size
print L[start:end] # three-item chunks
После значений start
и end
:
[0:3) #[1,2,3]
[3:6) #[4,5,6]
[6:9) #[7,8,9]
FWIW, вы можете получить тот же результат с map()
с начальным аргументом None
:
>>> map(None,*[iter(s)]*3)
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
Подробнее о zip()
и map()
: http://muffinresearch.co.uk/archives/2007/10/16/python-transposing-lists-with-map-and-zip/