【发布时间】:2021-02-05 01:46:30
【问题描述】:
我发现自己处于一种独特的情况,我需要将列出的一对数字中的单个元素相乘,其中每对都嵌套在一个父元素列表中。例如,我的预定义变量为:
output = []
initial_list = [[1,2],[3,4],[5,6]]
我正在尝试计算一个输出,使得每个元素都是每对中单个元素的唯一组合(总是长度为len(initial_list))的乘积。使用我的initial_list 示例,我希望生成一个长度为pow(2 * len(initial_list)) 的输出,该输出对于initial_list 中的任何“n”对(最少2 对)都是可伸缩的。所以在这种情况下,输出的每个元素如下:
output[0] = 1 * 3 * 5
output[1] = 1 * 3 * 6
output[2] = 1 * 4 * 5
output[3] = 1 * 4 * 6
output[4] = 2 * 3 * 5
output[5] = 2 * 3 * 6
output[6] = 2 * 4 * 5
output[7] = 2 * 4 * 6
在我的具体情况下,除了output[0] 之外,输出分配的顺序无关紧要,我需要等效于initial_list 中每对中第一个元素的乘积。继续生成输出列表以使每个元素都是每个列表中每个元素的唯一组合的最佳方法是什么?
...
我最初的方法是使用;
from itertools import combinations
from itertools import permutations
from itertools import product
以某种方式生成每个可能组合的列表,然后将产品相乘并将每个产品附加到输出列表中,但我无法等待成功实施这些工具。从那以后,我尝试创建一个递归函数,将for x in range(2): 与嵌套递归调用相结合,但我又一次找不到解决方案。
请比我更有经验和聪明的人帮助我;任何和所有的帮助表示赞赏!谢谢!
【问题讨论】:
-
initial_list是否总是在列表中包含列表? -
正确。
initial_list变量将始终包含不同长度的列表中的列表对。
标签: python python-3.x list recursion nested-lists