我希望将([2,3,6],[3,4,9],[4,8,13])等列表列表乘以另一个列表,该列表也具有相同的数量列表作为第一组列表,即,第一列表列表可以具有3个列表,每个列表具有5个数字的列表,但是第二列表将具有3个数字,每个数字乘以第一列表的行的元素。 e.g
([2,3,6],[3,4,9],[4,8,13]) with [2,3,4]
会导致
([4,6,12],[9,12,27],[16,32,52])
到目前为止我已经
了sol = [inv[i]*bb[i] for i in range(len(inv[i]))]
return sol
其中inv [i]是我的列表列表,bb是我的列表。
我希望这样可以对bb中的任何长度列表进行处理,只要它们的长度相同,就可以使用inv [i]
谢谢你们
更新:
我在pound的解决方案中加入并稍微摆弄了一下
现在打印
[20.0, -9.0, -3.0]
[40.0, -18.0, -6.0]
[40.0, -18.0, -6.0]
[40.0, -18.0, -6.0]
[3.0, -2.0, -0.0]
[40.0, -18.0, -6.0]
[40.0, -18.0, -6.0]
[40.0, -18.0, -6.0]
[-8.0, 4.0, 1.0]
[40.0, -18.0, -6.0]
[40.0, -18.0, -6.0]
[40.0, -18.0, -6.0]
代码:
print (inv[i])
sol = []
for i, item in enumerate(inv):
sol.append(map(lambda x: x*bb[i], item))
print sol[i]
如何摆脱废话并保留最后3行?
答案 0 :(得分:0)
import itertools
L = [[2,3,6],[3,4,9],[4,8,13]]
M = [2,3,4]
[[i*j for i,j in zip(subl, subm)] for subl, subm in zip(L, itertools.cycle([M]))]
输出:
Out[101]: [[4, 9, 24], [6, 12, 36], [8, 24, 52]]
没有itertools:
answer = []
for subl in L:
temp = []
for i in range(len(subl)):
temp.append(subl[i] * M[i])
answer.append(temp)
输出:
In [103]: answer
Out[103]: [[4, 9, 24], [6, 12, 36], [8, 24, 52]]
答案 1 :(得分:0)
big = [[2,3,6],[3,4,9],[4,8,13]]
small = [2,3,4]
res = []
for i, item in enumerate(big):
res.append(map(lambda x: x*small[i], item))
print res
输出:
[[4, 6, 12], [9, 12, 27], [16, 32, 52]]
答案 2 :(得分:0)
使用numpy库:
import numpy as np
list1 = np.array([[2,3,6],[3,4,9],[4,8,13]])
list2 = np.array([2,3,4])
result = list1 * list2.transpose()
result_list = result.tolist()
或者没有numpy:
list1 = [[2,3,6],[3,4,9],[4,8,13]]
list2 = [2,3,4]
result_list = list1[:]
for i in range(len(list1)):
result_list[i] = [x * list2[i] for x in result_list[i]]