当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中以未知长度的列表迭代级联格式(在for循环中)?

如何解决《如何在Python中以未知长度的列表迭代级联格式(在for循环中)?》经验,为你挑选了1个好方法。

考虑有一个列表A = [ [ ], [ ], ..., [ ] ](n次).A的每个子列表中都包含几个列表.我想做的是同时迭代它们.可以使用itertools.productitertools库中的" "函数轻松完成.就像是

    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编写代码.



1> DSM..:

你可以使用*-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].如果你想要对这些变量进行质量上不同的事情取决于它们中有多少变量,当然,没有办法解决某种分支问题.但是如果唯一的区别是将额外的变量合并到同一种操作中,你可以大大简化循环中的代码.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有