我有:我有列表 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/