Python中如何生成列表拼接形式的笛卡尔积结果
解决方法:拼接笛卡尔积中的子列表
你只需要在生成笛卡尔积之后,对每个元组里的子列表做拼接操作就行,Python里列表的+运算符正好能完成这个拼接工作,用列表推导式就能轻松实现:
import itertools x = [[0,0],[1,1]] # 遍历笛卡尔积的每个元素对,拼接两个子列表 final_result = [a + b for a, b in itertools.product(x, x)] print(final_result)
运行这段代码就会输出你想要的结果:
[[0, 0, 0, 0], [0, 0, 1, 1], [1, 1, 0, 0], [1, 1, 1, 1]]
补充说明
如果后续你需要处理更多个可迭代对象的笛卡尔积(比如itertools.product(x, x, x)),可以用itertools.chain.from_iterable()来拼接任意数量的子列表,写法更通用:
final_result = [list(itertools.chain.from_iterable(item)) for item in itertools.product(x, x, x)]
不过针对你当前的场景,直接用a + b更直观也更高效。
内容的提问来源于stack exchange,提问作者lobsterism
相关产品推荐
相关产品推荐

