我很好奇如何将一个列表中的值与另两个列表中的值相乘,但这两个列表都在同一个列表中。
例如,
a = [[2, 3, 1, 6], [1, 6, 1, 9], [1,`1, 1,2]]我想要:
[[2, 18, 1, 54], [2, 3, 1, 12]],[[2, 18, 1, 54], [1, 6, 1, 18]], [[2, 3, 1, 12], [1, 6, 1, 18]]其中一个与列表的其余部分相乘,而a1与其他列表相乘等等。
我已经在网上搜索过了,但是我不明白,或者没有任何例子可以在嵌套列表的上下文中将乘法或列表放在一起。
对不起,如果说不通的话,我对python还是很陌生的,英语不是我的第一语言。
发布于 2021-09-15 07:58:28
您可以使用numpy.array和*,如下所示:
import numpy as np
a = [[2, 3, 1, 6], [1, 6, 1, 9], [1,1, 1,2]]
[list(np.array(a[i])*np.array(a[j])) for i in range(len(a)) for j in range(len(a)) if i!=j]
#expand version
# out = []
# for i in range(len(a)):
# for j in range(len(a)):
# if i!=j:
# out.append(list(np.array(a[i])*np.array(a[j])))产出:
[[2, 18, 1, 54],
[2, 3, 1, 12],
[2, 18, 1, 54],
[1, 6, 1, 18],
[2, 3, 1, 12],
[1, 6, 1, 18]]在这个答案中,我使用numpy.array和*,如下所示:(numpy为您做这件事)
np.array([2, 3, 1, 6]) * np.array([1, 6, 1, 9])
# [2*1, 3*6, 1*1, 6*9]发布于 2021-09-15 08:05:23
使用itertools.permutations。
from itertools import permutations
a = [[2, 3, 1, 6], [1, 6, 1, 9], [1, 1, 1,2]]
b = []
for l1, l2 in permutations(a, 2):
b.append([i*j for i, j in zip(l1, l2)])
# OR with comprehension
b = [[i*j for i, j in zip(l1, l2)] for l1, l2 in permutations(a, 2)]输出:
>>> b
[[2, 18, 1, 54],
[2, 3, 1, 12],
[2, 18, 1, 54],
[1, 6, 1, 18],
[2, 3, 1, 12],
[1, 6, 1, 18]]发布于 2021-09-15 08:26:24
您可以使用zip进行乘法,使用for循环访问元素。
a = [[2, 3, 1, 6], [1, 6, 1, 9], [1,1, 1,2]]
b = a
result = []
for i in a:
for j in b:
if(j!=i):
k = [n1 * n2 for n1,n2 in zip(i, j)]
result.append(k)
print(result)https://stackoverflow.com/questions/69189035
复制相似问题