首页 > 解决方案 > Python 2.7 动态长度列表理解

问题描述

如果这个问题已经得到回答,我提前道歉。我已尽我所能在我有限的术语知识的情况下寻找解决方案。

这是有问题的代码行:

Matrix = list([s0, s1, s2] for s0 in splits[0] for s1 in splits[1] for s2 in splits[2])

基本上,我正在构建一个列表(矩阵),其中包含列表列表“拆分”中的所有排列。但是,Splits 的大小并不总是相同。例如,有时有 4 列,该行如下所示:

 Matrix = list([s0, s1, s2, **s3**] for s0 in splits[0] for s1 in splits[1] for s2 in splits[2] **for s3 in splits[3]**)

如何使这条线适应拆分的长度?IE

Matrix = list([s0,s1... , sN] for s0 in splits[0] for s1 in splits[1] ... for sN in splits[N])

谢谢

标签: python-2.7dynamiclist-comprehension

解决方案


解压splits到参数中itertools.product

from itertools import product

splits = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Note: a list of tuples, because product yields tuples
explicit = list((s0, s1, s2) for s0 in splits[0] for s1 in splits[1] for s2 in splits[2])

unpacking = list(product(*splits))

assert explicit == unpacking

推荐阅读