You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python列表与嵌套列表逐元素相乘问题求助(非numpy实现)

嘿,我来帮你看看问题出在哪~

你原来的代码里用了zip(a, b),这其实是把a里的元素和b里的子列表逐个配对了——比如a[0]和b[0]配对,a[1]和b[1]配对,然后每个子列表里的所有元素都只乘了a中对应的那一个元素,而且a[2]因为b只有两个子列表,根本没被用到,这就导致结果完全不符合预期啦。

我们需要的是对b里的每一个子列表,都和a做逐位置元素相乘,也就是子列表的第i个元素乘a的第i个元素。用纯Python的列表推导式就能解决,给你两种写法:

方法一:用zip配对对应元素

a = [1, 2, 3]
b = [[2, 4, 6], [3, 5, 7]]
product = [[x * y for x, y in zip(a, sublist)] for sublist in b]
print(product)  # 输出 [[2, 8, 18], [3, 10, 21]]

外层循环遍历b里的每个子列表,内层循环用zip(a, sublist)把a的元素和子列表的元素一一配对,相乘后就得到对应位置的乘积。

方法二:用索引定位元素

如果你习惯用索引操作,也可以这么写:

product = [[sublist[i] * a[i] for i in range(len(a))] for sublist in b]

通过range(len(a))获取索引,分别取子列表和a中对应位置的元素相乘,效果和上面完全一致。

内容的提问来源于stack exchange,提问作者Python_learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:37:33