Python 如何以递归方式将多个元组与列表列表相乘?
我一直在想办法,但找不到解决办法,情况是这样的: 我有一个元组列表,如下所示:Python 如何以递归方式将多个元组与列表列表相乘?,python,arrays,python-3.x,list,Python,Arrays,Python 3.x,List,我一直在想办法,但找不到解决办法,情况是这样的: 我有一个元组列表,如下所示: list = [(5,8,3) ,(4,5,6) ,(7,8,9)] 我还有另一个列表,上面有一些值,比如: #the lists inside list2 are user supplied lists list2 = [[10,20,30] ,[40,50,60] ,[70,80,90]] 我希望输出如下: 5*10, 5*20, 5*30 8*
list = [(5,8,3)
,(4,5,6)
,(7,8,9)]
我还有另一个列表,上面有一些值,比如:
#the lists inside list2 are user supplied lists
list2 = [[10,20,30]
,[40,50,60]
,[70,80,90]]
我希望输出如下:
5*10, 5*20, 5*30
8*40, 8*50, 8*60
3*70, 3*80, 3*90
4*10, 4*20, 4*30
5*40, 5*50, 5*60
6*70, 6*80, 6*90
7*10, 7*20, 7*30
8*40, 8*50, 8*60
9*70, 9*80, 9*90
您可以使用列表理解。但考虑到这些都是数组操作,我建议您使用专业的第三方库,如NumPy。这里有一个方法:
import numpy as np
L1 = np.array([(5, 8, 3),
(4, 5, 6),
(7, 8, 9)])
L2 = np.array([[10, 20, 30],
[40, 50, 60],
[70, 80, 90]])
res = np.transpose((L1[:, None, :] * L2[:, :, None].T), axes=[0, 2, 1])
结果:
array([[[ 50, 100, 150],
[320, 400, 480],
[210, 240, 270]],
[[ 40, 80, 120],
[200, 250, 300],
[420, 480, 540]],
[[ 70, 140, 210],
[320, 400, 480],
[630, 720, 810]]])
您可以使用列表理解。但考虑到这些都是数组操作,我建议您使用专业的第三方库,如NumPy。这里有一个方法:
import numpy as np
L1 = np.array([(5, 8, 3),
(4, 5, 6),
(7, 8, 9)])
L2 = np.array([[10, 20, 30],
[40, 50, 60],
[70, 80, 90]])
res = np.transpose((L1[:, None, :] * L2[:, :, None].T), axes=[0, 2, 1])
结果:
array([[[ 50, 100, 150],
[320, 400, 480],
[210, 240, 270]],
[[ 40, 80, 120],
[200, 250, 300],
[420, 480, 540]],
[[ 70, 140, 210],
[320, 400, 480],
[630, 720, 810]]])
嵌套列表理解
In [15]: [[[c*d for d in b] for c in a ] for a in list for b in list2]
Out[15]:
[[[50, 100, 150], [80, 160, 240], [30, 60, 90]],
[[200, 250, 300], [320, 400, 480], [120, 150, 180]],
[[350, 400, 450], [560, 640, 720], [210, 240, 270]],
[[40, 80, 120], [50, 100, 150], [60, 120, 180]],
[[160, 200, 240], [200, 250, 300], [240, 300, 360]],
[[280, 320, 360], [350, 400, 450], [420, 480, 540]],
[[70, 140, 210], [80, 160, 240], [90, 180, 270]],
[[280, 350, 420], [320, 400, 480], [360, 450, 540]],
[[490, 560, 630], [560, 640, 720], [630, 720, 810]]]
嵌套列表理解
In [15]: [[[c*d for d in b] for c in a ] for a in list for b in list2]
Out[15]:
[[[50, 100, 150], [80, 160, 240], [30, 60, 90]],
[[200, 250, 300], [320, 400, 480], [120, 150, 180]],
[[350, 400, 450], [560, 640, 720], [210, 240, 270]],
[[40, 80, 120], [50, 100, 150], [60, 120, 180]],
[[160, 200, 240], [200, 250, 300], [240, 300, 360]],
[[280, 320, 360], [350, 400, 450], [420, 480, 540]],
[[70, 140, 210], [80, 160, 240], [90, 180, 270]],
[[280, 350, 420], [320, 400, 480], [360, 450, 540]],
[[490, 560, 630], [560, 640, 720], [630, 720, 810]]]
到目前为止你试过什么?你犯了什么错误?你想打印输出还是为另一个嵌套元组计算输出?我尝试了嵌套循环,但得到了非常奇怪的结果,我想打印输出你到目前为止尝试了什么?你犯了什么错误?你想打印输出还是为另一个嵌套元组计算输出?我尝试了嵌套循环,但我得到了非常奇怪的结果,我想打印输出Hanx,这正是我想要的Hanx,这正是我想要的。你可以提供一个关于这个主题的教程链接吗?你可以提供一个关于这个主题的教程链接吗?