Python 两个列表中所有元素的乘法

Python 两个列表中所有元素的乘法,python,list,Python,List,我想将列表1的每个数字与列表2的每个数字相乘。 例如: [1,2]*[1,2,3]应该返回如下内容:[1,2,3,2,4,6] 我只想知道是否有任何特殊的函数来计算它,因为使用for循环计算它会花费很多时间。一个简单的嵌套函数可以: lst1, lst2 = [1, 2], [1, 2, 3] [x * y for x in lst1 for y in lst2] # [1, 2, 3, 2, 4, 6] 要从两个列表中获取所有对(笛卡尔积),还可以使用: 一个简单的嵌套模型将起作用: ls

我想将列表1的每个数字与列表2的每个数字相乘。
例如:
[1,2]*[1,2,3]
应该返回如下内容:
[1,2,3,2,4,6]
我只想知道是否有任何特殊的函数来计算它,因为使用for循环计算它会花费很多时间。

一个简单的嵌套函数可以:

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

[x * y for x in lst1 for y in lst2]
# [1, 2, 3, 2, 4, 6]
要从两个列表中获取所有对(笛卡尔积),还可以使用:

一个简单的嵌套模型将起作用:

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

[x * y for x in lst1 for y in lst2]
# [1, 2, 3, 2, 4, 6]
要从两个列表中获取所有对(笛卡尔积),还可以使用:


您也可以使用点产品来实现这一点,如
numpy
所提供的(我将此作为一个答案,因为您说您正在寻找任何特殊功能,并希望优化速度,尽管我同意这不是最可读或最直接的方法):


您也可以使用点产品来实现这一点,如
numpy
所提供的(我将此作为一个答案,因为您说您正在寻找任何特殊功能,并希望优化速度,尽管我同意这不是最可读或最直接的方法):

试试这个:

import itertools    

a = [1, 2]
b = [1, 2, 3]
result = []
for n in a:
    m = map(lambda x,y: x*y, b, itertools.repeat(n))
    result.extend(m)
试试这个:

import itertools    

a = [1, 2]
b = [1, 2, 3]
result = []
for n in a:
    m = map(lambda x,y: x*y, b, itertools.repeat(n))
    result.extend(m)
您可以使用来获取所有对。从那里,您可以将它们传递给一个函数,以计算它们的(算术)乘积。您可以使用来获得所有对。从那里,您可以将它们传递给一个函数来计算它们的(算术)乘积。