如果我将itertools.product
与两个列表一起使用,则嵌套的for循环等效项将始终首先循环第二个列表:
>>> from itertools import product
>>> list(product([1,2,3], [4,5,6]))
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
但是对于某些用例,我可能希望这些命令是交替的,就像弹出每个列表中的第一个项目一样,而不是实际弹出它们。假设函数首先给出[1,4],然后[2,4](1弹出),然后[2,5](4弹出),然后[3,5],最后[3,6]
>>> list(hypothetical([1,2,3], [4,5,6]))
[(1, 4), (2, 4), (2, 5), (3, 5), (3, 6)]
我能想到的唯一方法是在for循环中产生一个“从下一个弹出的列表”标志。
是否有内置或库方法可以执行此操作?我必须自己写吗?
答案 0 :(得分:1)
import itertools
L1 = [1, 2, 3]
L2 = [4, 5, 6]
print list(zip(itertools.islice((e for e in L1 for x in (1, 2)), 1, None), (e for e in L2 for x in (1, 2))))