Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表与列表相乘的列表_Python_Python 3.x - Fatal编程技术网

Python 列表与列表相乘的列表

Python 列表与列表相乘的列表,python,python-3.x,Python,Python 3.x,我想使用python 3将列表与列表相乘,假设列表的名称为L,如下所示: L = [[45.909221207388235, 84.41069326628269], [80.6591435966521, 47.93257841035172]] 第二个清单是: S = [0.002, 0.001] 乘法应该是:L[0][0]*S[0]和L[0][1]*S[0]然后是L[1][0]*S[1]和L[1][1]*S[1] 我尝试了zip方法: [a*b for x,y in zip(S,L) for

我想使用python 3将列表与列表相乘,假设列表的名称为
L
,如下所示:

L = [[45.909221207388235, 84.41069326628269], [80.6591435966521, 47.93257841035172]]
第二个清单是:

S = [0.002, 0.001]
乘法应该是:
L[0][0]*S[0]
L[0][1]*S[0]
然后是
L[1][0]*S[1]
L[1][1]*S[1]

我尝试了
zip
方法:

[a*b for x,y in zip(S,L) for a,b in zip(x,y)]
但是出现了一个错误:
zip
参数
1
必须支持迭代

第二次试验使用
map(lambda)

但得到的结果是错误的:

[9.181844241477647e-05, 0.00016882138653256538, 0.0001613182871933042, 9.586515682070343e-05]
正确的值为:

[0.09181844241477648, 0.1688213865325654, 0.0806591435966521, 0.047932578410351714]

您想使用
zip
,但不能使用两次:

>>> L = [[45.909221207388235, 84.41069326628269], [80.6591435966521, 47.93257841035172]]
>>> S = [0.002, 0.001]
>>> [n*x for n, sub in zip(S, L) for x in sub]
[0.09181844241477648, 0.1688213865325654, 0.0806591435966521, 0.047932578410351714]
>>>
因此,您需要将每个数字与每个子列表配对,然后将子列表中的每个数字乘以主数字

请注意,以防您正在使用
numpy
(我认为您不是,并且我认为仅为此使用
numpy
是不合理的),并且
S
L
numpy.ndarray
对象,即:

>>> S = np.array(S)
>>> L = np.array(L)
那么你可能只想:

>>> (S*L).ravel()
array([0.09181844, 0.08441069, 0.16131829, 0.04793258])

如果我理解正确,你想用L中的每一列乘以S的相应值:

L = [[45.909221207388235, 84.41069326628269],
     [80.6591435966521, 47.93257841035172]]
S = [0.002, 0.001]

R = [ [s*n for n in row] for s,row in zip(S,L) ]
输出:

print(R)
[ [0.09181844241477648, 0.1688213865325654],
  [0.0806591435966521,  0.047932578410351714]]

您应该给出一个行数不同于列数的示例,以便更清楚地说明这一点

您可以使用numpy数组来实现这一点。
print(R)
[ [0.09181844241477648, 0.1688213865325654],
  [0.0806591435966521,  0.047932578410351714]]