Python中实现三列表运算并将结果合并为扁平列表的方法
实现方案
核心逻辑
按顺序执行三重遍历,对a的每个元素、b的每个元素、c的每个元素执行a元素 * b元素 - c元素的计算,最终将所有结果汇总为一维扁平列表。
代码实现
写法1:嵌套列表推导式(最简洁,通用场景首选)
a = [1,2] b = [0,1] c = [1,2] output = [a_i * b_i - c_i for a_i in a for b_i in b for c_i in c] print(output) # 输出结果:[-1, -2, 0, -1, -1, -2, 1, 0]
写法2:基于itertools.product(适合大列表内存优化场景)
如果需要处理超大列表、避免一次性生成全量结果占用过多内存,可以用笛卡尔积生成器实现:
from itertools import product a = [1,2] b = [0,1] c = [1,2] # 如需迭代器可直接把[]换成()得到生成器对象 output = [x*y - z for x,y,z in product(a,b,c)]
结果校验
我们可以对照示例拆解计算过程验证正确性:
- 取a的第一个元素
1- 乘b的第一个元素
0得到0,分别减c的1、2,得到结果-1、-2 - 乘b的第二个元素
1得到1,分别减c的1、2,得到结果0、-1
- 乘b的第一个元素
- 取a的第二个元素
2- 乘b的第一个元素
0得到0,分别减c的1、2,得到结果-1、-2 - 乘b的第二个元素
1得到2,分别减c的1、2,得到结果1、0
将以上结果按顺序拼接,和示例给出的输出完全一致。
- 乘b的第一个元素
内容的提问来源于stack exchange,提问作者user11595058
相关产品推荐
相关产品推荐

