考虑有一个列表A = [ [ ], [ ], ..., [ ] ]
(n次).A的每个子列表中都包含几个列表.我想做的是同时迭代它们.可以使用itertools.product
itertools库中的" "函数轻松完成.就像是
for i,j,k in itertools.product(A[0],A[1],A[2]): #my code
就足够了.但是我不知道列表A的长度.如果是3,我可以使用上面的代码.目前我正在做这样的事情
if len(A) == 2: for i,j in itertools.product(A[0],A[1]): #my code elif len(A) == 3: for i,j,k in itertools.product(A[0],A[1],A[2]): #same code with minor changes to include parameter k elif len(A) == 4: for i,j,k,l in itertools.product(A[0],A[1],A[2],A[3]): #same code with minor changes to include parameter k and l
由于这很乏味,我想知道是否存在使用列表理解或其他方面的通用解决方案.我用Python编写代码.
你可以使用*
-unpacking:
>>> A = [[1,2],[3,4]] >>> for ii in itertools.product(*A): ... print(ii) ... (1, 3) (1, 4) (2, 3) (2, 4)
ii
将成为价值观的元组.i,j,k
你将使用而不是写作等ii[0],ii[1],ii[2]
.如果你想要对这些变量进行质量上不同的事情取决于它们中有多少变量,当然,没有办法解决某种分支问题.但是如果唯一的区别是将额外的变量合并到同一种操作中,你可以大大简化循环中的代码.