我有两个列表,第三个列表依赖于第一个列表(如果l1是1,那么l3中要取的元素是11或111,如果l2是2,那么l3要取的元素是22或222)。
l1 = [1, 2]
l2 = [3, 4]
l3 = [[11, 111], [22, 222]] # the numbers are calculated for each element of l1
字符串
我想要的是创建一个组合,导致:
[(1,3,11), (1,3,111), (1,4,11), (1,4,111), (2,3,22), (2,3,222), (2,4,22), (2,4,222)]
型
你有什么建议吗?
5条答案
按热度按时间qco9c6ql1#
这个怎么样?
字符串
6ju8rftf2#
l1和l3之间的关系并不清楚,但假设它只是位置关系,你可以使用zip()的嵌套理解来合并组合l1和l3:
字符串
pxyaymoc3#
这将工作:
字符串
这个循环遍历
l1
,对于每个第i
个元素,它产生所有与该元素的组合,后跟l2
中的任何一个和l3
中的第i
个列表中的任何一个。itertools.chain
调用合并组合所有组合列表也可以重写为列表解析:型
一个快速基准测试,包含所有长度为100、
len(l3[i]) == 5
和1000次迭代(code)的列表:itertools.chain
:1.95sdy2hfwbg4#
以下是我的尝试:
字符串
运行以下命令会产生您所描述的结果:
型
ni65a41a5#
谢谢大家!最后,我结束了这个:
字符串