【问题标题】:Zipping a product of iterators and a count iterator压缩迭代器和计数迭代器的乘积
【发布时间】:2026-01-27 11:25:02
【问题描述】:

我正在尝试将计数连接到两个迭代器的乘积,如下所示:

import itertools
it1 = itertools.product(['A', 'B'], [1, 2, 3])
it2 = itertools.count(1)
list(zip(it1, it2))

这会生成输出

[(('A', 1), 1),
 (('A', 2), 2),
 (('A', 3), 3),
 (('B', 1), 4),
 (('B', 2), 5),
 (('B', 3), 6)]

但是,我想要的是

[('A', 1, 1),
 ('A', 2, 2),
 ('A', 3, 3),
 ('B', 1, 4),
 ('B', 2, 5),
 ('B', 3, 6)]

【问题讨论】:

  • 也可以枚举如下[(*t, i) for i, t in enumerate(it.product("AB", [1, 2, 3]), 1)]

标签: python python-3.x iterator


【解决方案1】:

您可以使用列表推导来展平元组:

result = [(*i, j) for i, j in zip(it1 , it2)]

print(result)

输出:

[('A', 1, 1),
 ('A', 2, 2),
 ('A', 3, 3),
 ('B', 1, 4),
 ('B', 2, 5),
 ('B', 3, 6)]

【讨论】: