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