Умножить сразу несколько объектов из итерируемого объекта?
Как я могу предоставить несколько элементов за раз из итерируемого объекта?
Например, с последовательностью произвольной длины, как я могу перебирать элементы в последовательности в группах из X последовательных элементов на итерацию?
Ответ 1
Ваш вопрос немного расплывчатый, но ознакомьтесь с рецептом grouper в документации itertools.
(Замена одного и того же итератора несколько раз с помощью [iter(iterable)]*n - это старый трюк, но инкапсуляция в эту функцию позволяет избежать запутанного кода, и это точная форма и интерфейс, которые многие люди будут использовать. немного стыдно, что он фактически не находится в модуле itertools.)
Ответ 2
Вот еще один подход, который работает на более старой версии Python, у которой нет izip_longest:
def grouper(n, seq):
result = []
for x in seq:
result.append(x)
if len(result) >= n:
yield tuple(result)
del result[:]
if result:
yield tuple(result)
Нет наполнителя, поэтому в последней группе может быть меньше n элементов.