gpt4 book ai didi

python - 在 Python 中将列表的每个元素与另一个列表的每个元素相乘/相加/相除的有效方法

转载 作者:行者123 更新时间:2023-11-28 16:29:36 24 4
gpt4 key购买 nike

我想将一个列表的每个元素与另一个列表的每个元素相乘。

lst1 = [1, 2, 1, 2]
lst2 = [2, 2, 2]

lst3 = []

for item in lst1:
for i in lst2:
rs = i * item
lst3.append(rs)

这可行,但在大型数据集中效率非常低,并且可能需要很长时间才能完成循环。请注意,此处两个列表的长度可能不同。

我可以使用非内置数据结构。我检查了 numpy,在 ndarray 中似乎有一种称为广播的方式。我不确定这是否可行。到目前为止,数组与标量的乘法按预期工作。

arr = np.arange(3)
arr * 2

返回:

array([0, 2, 4])

但它们与另一个数组一起工作的方式有点不同,我似乎无法实现上述目标。

我想这一定是直截了当的事情,但我目前似乎无法找到所需的确切解决方案。任何输入将不胜感激。谢谢。

顺便说一句,在不考虑效率的情况下,Scheme也有类似的问题here

编辑:感谢您的回答。乘法有效,请参阅 Dval 的回答。但是,我还需要以完全相同的方式进行加法和除法。出于这个原因,我稍微更新了问题。

编辑:我可以使用 numpy 数组本身,所以我不需要将列表转换为数组并返回。

最佳答案

Numpy 是必经之路,特别是 numpy.outer ,它以矩阵的形式返回每个元素的乘积。使用 .flatten() 将其压缩为 1d。

import numpy
lst1 = numpy.array([1, 2, 1, 2])
lst2 = numpy.array([2, 2, 2])
numpy.outer(lst1, lst2).flatten()

要添加到更新的问题,加法似乎以类似的方式工作:

numpy.add.outer(lst1, lst2).flatten()

关于python - 在 Python 中将列表的每个元素与另一个列表的每个元素相乘/相加/相除的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33357085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com