Python 将列表乘以嵌套列表

Python 将列表乘以嵌套列表,python,list,Python,List,我试图用嵌套列表乘以一个列表 例如,如果我们有 a=[1,2,3] b=[[2,4,6],[3,5,7]] 我试图用“列表a”的元素乘以“列表b”的每个元素 我正试图在这方面取得一些成就 product=[[2,8,18],[3,10,21]] 这是我到目前为止试过的 product=[[w*c for c in v] for w, v in zip(a, b)] 我得到的结果是 [[-4.0, -8.0, -12.0], [0.0, 0.0, 0.0]] 这显然不是我所期望的 顺便

我试图用嵌套列表乘以一个列表

例如,如果我们有

a=[1,2,3]
b=[[2,4,6],[3,5,7]]

我试图用“列表a”的元素乘以“列表b”的每个元素

我正试图在这方面取得一些成就

product=[[2,8,18],[3,10,21]]

这是我到目前为止试过的

product=[[w*c for c in v] for w, v in zip(a, b)]
我得到的结果是

[[-4.0, -8.0, -12.0], [0.0, 0.0, 0.0]]
这显然不是我所期望的


顺便说一下,我不允许使用numpy。

您可以结合列表理解使用
zip

product = [[i*j for i,j in zip(a,k)] for k in b]

我会有一个内部的
zip
,因为一个外部的zip将使用a和b压缩,每个列表对都使用a中的每个元素,所以它将失败

print([[y*z for y,z in zip(a,x)] for x in b])
输出:

[[2, 8, 18], [3, 10, 21]]

结果b等于
[[2,8,18],[3,10,21]
,如果只是从Python开始,而不是处理列表理解和zip或其他函数式编程调用,可能更容易推理。

您的
zip
放错了位置-您需要
zip
a
与内部列表一起使用(您当前调用的是
v
),而不是外部列表。
res=[[i*j代表i,j在zip中(subl,a)]代表b中的subl]
你需要看看
a
是什么在相乘,并使用zip中的列表与
a
一起使用,而不是使用列表理解,我建议你使用循环来完成这项工作,然后继续进行列表理解以获得更多的理解。谢谢你们,是的,如果我从循环开始,这听起来对我来说是合理的first@jonrsharpe谢谢!问题事实上,我把拉链放错地方了
a=[1,2,3]
b=[[2,4,6],[3,5,7]]

for idxa, val in enumerate(a):
    for idxb, sublist in enumerate(b):
        b[idxb][idxa] = sublist[idxa] * val