将itertools.product和range组合在一个循环中,而不从range创建笛卡尔乘积



我希望能够创建一个循环,对两个列表(first_list和second_list(进行叉积,也可以在0到(len(first_liist(*len(second_liist((-1的范围内进行并行循环。

下面的代码是错误的,但它给出了我想做什么的想法。

for first_list_element, second_list_element, i in zip(
itertools.product(
first_list,
second_list,
),
range(len(first_list) * len(second_list)),
)

IIUC,您可以在itertools.productfor-loop中使用enumerate访问range from 0 to (len(first_list) * len(second_list)) - 1

from itertools import product
fl = [2,3]
fs = [4,5,6]
for idx, (l, s) in enumerate(product(*[fl,fs])):
print(idx, (l,s))

0 (2, 4)
1 (2, 5)
2 (2, 6)
3 (3, 4)
4 (3, 5)
5 (3, 6)

最新更新