首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表上的基本操作

列表上的基本操作
EN

Stack Overflow用户
提问于 2021-09-15 07:49:01
回答 4查看 67关注 0票数 1

我很好奇如何将一个列表中的值与另两个列表中的值相乘,但这两个列表都在同一个列表中。

例如,

代码语言:javascript
运行
复制
a = [[2, 3, 1, 6], [1, 6, 1, 9], [1,`1, 1,2]]

我想要:

代码语言:javascript
运行
复制
[[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还是很陌生的,英语不是我的第一语言。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-09-15 07:58:28

您可以使用numpy.array*,如下所示:

代码语言:javascript
运行
复制
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])))

产出:

代码语言:javascript
运行
复制
[[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为您做这件事)

代码语言:javascript
运行
复制
np.array([2, 3, 1, 6]) * np.array([1, 6, 1, 9])
# [2*1, 3*6, 1*1, 6*9]
票数 2
EN

Stack Overflow用户

发布于 2021-09-15 08:05:23

使用itertools.permutations

代码语言:javascript
运行
复制
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)]

输出:

代码语言:javascript
运行
复制
>>> 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]]
票数 1
EN

Stack Overflow用户

发布于 2021-09-15 08:26:24

您可以使用zip进行乘法,使用for循环访问元素。

代码语言:javascript
运行
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69189035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档