Я думаю, это то, о чем вы говорите, дайте мне знать, если я не на правильном пути.
for a, b, c in your_generator:
# do stuff
Предполагается, что your_generator
дает результаты в виде последовательности точно из 3 элементов.
Вы можете создать генератор, который будет выдавать ровно n
элементов за раз для использования в цикле for
, следующим способом:
itertools.izip_longest(*[your_generator]*n)
И если ваш генератор не выдает ни одного предмета за раз, и вы хотите изменить количество производимых им предметов, вы используете следующее:
itertools.izip_longest(*[itertools.chain(*your_generator)]*n)
Вот пример:
>>> from itertools import izip_longest, chain, combinations
>>> for a, b, c, d in izip_longest(*[chain(*combinations(range(4), 2))]*4):
... print a, b, c, d
...
0 1 0 2
0 3 1 2
1 3 2 3
Это берет генератор, который первоначально давал предметы по два за раз, и вместо этого дает элементы четыре за один раз.