gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:00:33 24 4
gpt4 key购买 nike

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

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

最佳答案

您可以使用*-解包:

>>> A = [[1,2],[3,4]]
>>> for ii in itertools.product(*A):
... print(ii)
...
(1, 3)
(1, 4)
(2, 3)
(2, 4)

ii 将是值的元组。您将使用 ii[0],ii[1],ii[2] 而不是编写 i,j,k 等。如果你想根据变量的数量对这些变量做不同的事情,当然没有办法绕过某种分支。但是,如果唯一的区别是将额外的变量合并到相同类型的操作中,您可能可以大大简化循环内的代码。

关于python - 如何在 Python 中以级联格式(在 for 循环中)迭代未知长度的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com