python - 如何在几行 Python 代码中编写许多嵌套的 for 循环?

标签 python numpy for-loop recursion nested-loops

我有:我有列表 List123=[-13,3,12,1] 和 2×4 矩阵 Matrix123 =numpy.zeros((2,4), dtype=Decimal).

我想要什么:我想将矩阵的所有条目更改为列表的任何条目,然后将其打印到终端。有 4^(2*4)=65536 种可能的组合。我想打印每个组合。

我现在是怎么做的:这是我当前的代码:

List123=[-13,3,12,1]

Matrix123=numpy.zeros((2,4), dtype=Decimal)

k=0
for k in List123:
    Matrix123[0,0]=k
    for k in List123:
        Matrix123[0,1]=k
        for k in List123:
            Matrix123[0,2]=k
            for k in List123:
                Matrix123[0,3]=k
                for k in List123:
                    Matrix123[1,0]=k
                    for k in List123:
                        Matrix123[1,1]=k
                        for k in List123:
                            Matrix123[1,2]=k
                            for k in List123:
                                Matrix123[1,3]=k
                                print Matrix123
                                print " "

我的问题: 什么是仅用几行代码编写此代码的更紧凑的方法?我需要对 23×27 执行相同的操作矩阵。这意味着如果我找不到更紧凑的方法,我必须手动编写 23*27=621 个 for 循环的代码。

最佳答案

我强烈建议您在 python 内置工具中使用 itertools:

from itertools import product
import numpy as np

List123 = [-13, 3, 12, 1]

for i in product(List123, repeat=8):
    print(np.array(i).reshape(2, 4))

这是一个纯递归函数版本:

import numpy as np

List123 = [-13, 3, 12, 1]

def dfs(depth=1, result=None):
    if result is None:
        result = []
    if depth == 9:
        print(np.array(result).reshape(2, 4))
        return

    for i in List123:
        dfs(depth + 1, result + [i])

dfs()

两种方式都有 65536 个结果。

关于python - 如何在几行 Python 代码中编写许多嵌套的 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46178845/

相关文章:

python - 将相同的 numpy 数组与标量相乘多次

Python写入文件smb路径

python - 具有值历史的非同质数据的数据库设计

python - 使用 Python 将 mp4 AAC 转换为 AVC

python - timedelta 不支持的类型

java - 对于 i0 变量

python - 使用 Python 在 CSV 上添加新列

python - 两个类似的实现退出运行时间差异巨大

java - 嵌套 "FOR-loops"不起作用

linux - for循环从文件运行命令