嵌套循环 Python 列表

Nested looping a Python list

提问人:Rohan Mathur 提问时间:4/9/2022 更新时间:4/9/2022 访问量:38

问:

我有一个长度为 6 的列表,L[5] = 3 是固定的。我需要循环 243 次(或其他东西)才能按特定顺序获得组合。

L[4] 将继续 1,2,3 和 L[3] 在这段时间内保持不变,然后从右向左移动。我知道这将是一些嵌套循环,但无法正确完成。该列表可以初始化为任何内容,但 L[5] 需要为 3,第一个组合为 L = [1,1,1,1,1,3],最后一个组合为 [3,3,3,3,3,3]The yellow highlights are the indexes and red will always be 3

Python 循环 for 循环 数据操作

评论


答:

2赞 Andrej Kesely 4/9/2022 #1

IIUC 你可以使用 itertools.product

from itertools import product

vals = [[1, 2, 3]] * 5 + [[3]]

for c in product(*vals):
    print(c)

指纹:

(1, 1, 1, 1, 1, 3)
(1, 1, 1, 1, 2, 3)
(1, 1, 1, 1, 3, 3)
(1, 1, 1, 2, 1, 3)
(1, 1, 1, 2, 2, 3)
(1, 1, 1, 2, 3, 3)
(1, 1, 1, 3, 1, 3)
(1, 1, 1, 3, 2, 3)
(1, 1, 1, 3, 3, 3)
(1, 1, 2, 1, 1, 3)

...

(3, 3, 3, 3, 1, 3)
(3, 3, 3, 3, 2, 3)
(3, 3, 3, 3, 3, 3)
1赞 Jhanzaib Humayun 4/9/2022 #2

像这样的东西应该可以工作:

list = []

for i in range(1,4):
    for j in range(1,4):
        for k in range(1,4):
            for l in range(1,4):
                for m in range(3,4):
                    list.append([i,j,k,l,m])

for elem in list:
    print(elem)

输出:

[1, 1, 1, 1, 3]
[1, 1, 1, 2, 3]
[1, 1, 1, 3, 3]
[1, 1, 2, 1, 3]
[1, 1, 2, 2, 3]
[1, 1, 2, 3, 3]
[1, 1, 3, 1, 3]
[1, 1, 3, 2, 3]
[1, 1, 3, 3, 3]
[1, 2, 1, 1, 3]
[1, 2, 1, 2, 3]
[1, 2, 1, 3, 3]
[1, 2, 2, 1, 3]
[1, 2, 2, 2, 3]
[1, 2, 2, 3, 3]
[1, 2, 3, 1, 3]
[1, 2, 3, 2, 3]
[1, 2, 3, 3, 3]
[1, 3, 1, 1, 3]
[1, 3, 1, 2, 3]
[1, 3, 1, 3, 3]
[1, 3, 2, 1, 3]
[1, 3, 2, 2, 3]
[1, 3, 2, 3, 3]
[1, 3, 3, 1, 3]
[1, 3, 3, 2, 3]
[1, 3, 3, 3, 3]
[2, 1, 1, 1, 3]
[2, 1, 1, 2, 3]
[2, 1, 1, 3, 3]
[2, 1, 2, 1, 3]
[2, 1, 2, 2, 3]
[2, 1, 2, 3, 3]
[2, 1, 3, 1, 3]
[2, 1, 3, 2, 3]
[2, 1, 3, 3, 3]
[2, 2, 1, 1, 3]
[2, 2, 1, 2, 3]
[2, 2, 1, 3, 3]
[2, 2, 2, 1, 3]
[2, 2, 2, 2, 3]
[2, 2, 2, 3, 3]
[2, 2, 3, 1, 3]
[2, 2, 3, 2, 3]
[2, 2, 3, 3, 3]
[2, 3, 1, 1, 3]
[2, 3, 1, 2, 3]
[2, 3, 1, 3, 3]
[2, 3, 2, 1, 3]
[2, 3, 2, 2, 3]
[2, 3, 2, 3, 3]
[2, 3, 3, 1, 3]
[2, 3, 3, 2, 3]
[2, 3, 3, 3, 3]
[3, 1, 1, 1, 3]
[3, 1, 1, 2, 3]
[3, 1, 1, 3, 3]
[3, 1, 2, 1, 3]
[3, 1, 2, 2, 3]
[3, 1, 2, 3, 3]
[3, 1, 3, 1, 3]
[3, 1, 3, 2, 3]
[3, 1, 3, 3, 3]
[3, 2, 1, 1, 3]
[3, 2, 1, 2, 3]
[3, 2, 1, 3, 3]
[3, 2, 2, 1, 3]
[3, 2, 2, 2, 3]
[3, 2, 2, 3, 3]
[3, 2, 3, 1, 3]
[3, 2, 3, 2, 3]
[3, 2, 3, 3, 3]
[3, 3, 1, 1, 3]
[3, 3, 1, 2, 3]
[3, 3, 1, 3, 3]
[3, 3, 2, 1, 3]
[3, 3, 2, 2, 3]
[3, 3, 2, 3, 3]
[3, 3, 3, 1, 3]
[3, 3, 3, 2, 3]
[3, 3, 3, 3, 3]

评论

1赞 Rohan Mathur 4/9/2022
谢谢,我又加了一个巢,但明白了这个概念。