如何在python中创建重复数矩阵?

如何在python中创建重复数矩阵?,python,loops,matrix,iterator,Python,Loops,Matrix,Iterator,我想: 创建一个从0到4的向量列表,即[0,1,2,3,4],并从中 创建一个矩阵,其中包含从0到4的分层列表,重复3次,每个维度一次。矩阵有4^3=64行,例如 T = [0 0 0 0 0 1 0 0 2 0 0 3 0 0 4 0 1 0 0 1 1 0 1 2 0 1 3 0 1 4 0 2 0

我想: 创建一个从0到4的向量列表,即[0,1,2,3,4],并从中 创建一个矩阵,其中包含从0到4的分层列表,重复3次,每个维度一次。矩阵有4^3=64行,例如

T = [0 0 0    
       0 0 1  
       0 0 2  
       0 0 3  
       0 0 4  
       0 1 0  
       0 1 1  
       0 1 2  
       0 1 3  
       0 1 4  
       0 2 0  
       ...  
       1 0 0  
       ...  
       1 1 0  
       ....  
       4 4 4]    
这就是我到目前为止所做的:

n=5;
ind=list(range(0,n))
print(ind)
我刚刚开始使用Python,因此非常感谢您的帮助

python产品函数可以做到这一点:

 list_ = []
 for a in range(5):
     for b in range(5):
        for c in range(5):
              list_ += [a ,b ,c ]

 print(list_)
for code in itertools.product( range(5), repeat=3 ):
    print(code)
给出结果:

(0, 0, 0)
(0, 0, 1)
(0, 0, 2)
(0, 0, 3)
...
(4, 4, 2)
(4, 4, 3)
(4, 4, 4)
因此,要使其成为一个矩阵:

import itertools
matrix = []
for code in itertools.product( range(5), repeat=3 ):
     matrix.append( list(code) )
python产品函数可以做到这一点:

for code in itertools.product( range(5), repeat=3 ):
    print(code)
给出结果:

(0, 0, 0)
(0, 0, 1)
(0, 0, 2)
(0, 0, 3)
...
(4, 4, 2)
(4, 4, 3)
(4, 4, 4)
因此,要使其成为一个矩阵:

import itertools
matrix = []
for code in itertools.product( range(5), repeat=3 ):
     matrix.append( list(code) )

注意,您确实希望矩阵有5^3=125行。基本答案是只在嵌套for循环中迭代:

T = []
for a in range(5):
    for b in range(5):
        for c in range(5):
            T.append([a, b, c])

还有其他可能更快的方法可以做到这一点,但就纯粹的完成速度而言,很难击败这一点

注意,您确实希望矩阵有5^3=125行。基本答案是只在嵌套for循环中迭代:

T = []
for a in range(5):
    for b in range(5):
        for c in range(5):
            T.append([a, b, c])

还有其他可能更快的方法可以做到这一点,但就纯粹的完成速度而言,很难击败这一点

@Tomothy32-我得去查语法,你比我快。我不喜欢pythonic方式,它不可读,尤其是对于初学者来说。另外,matrix=[listcode for code in itertools.productrange5,repeat=3]更简单、更具pythonic。@明天32-我必须去查找语法,你比我快。我不喜欢pythonic方式,它是不可读的,特别是对于初学者来说。此外,matrix=[listcode for code in itertools.productrange5,repeat=3]更简单、更具pythonic。这是错误的。首先,它生成一个一维列表,而不是多行3。第二,与要求的行相比,行是向后的。OP在他们的问题中提到了矩阵,但提供了一个python列表T=[0 0 0 0等,不带逗号,只有换行符和空格。这是不正确的。首先,它生成一个一维列表,而不是多行3。其次,与要求的行相比,这些行的内容是向后的。OP在他们的问题中提到了矩阵,但提供了一个python列表T=[0 0 0 0 0等,没有逗号,只有换行符和空格,不是吗?追加[a,b,c]?这会使顺序与OP要求的相反。你确定吗?在我的机器上运行它:[[0,0,0,0],[1,0,0],[2,0,0],[4,0,0],[0,1,0],[2,1,0],[3,1,0],[4,1,0],[0,0],[0,2,0,0],[1,0,0,2],[4, 2, 0], [0, 3, 0], [1, 3, 0], [2, 3, 0], [3, 3, 0], [4, 3, 0], [0, 4, 0], [1, 4, 0], [2, 4, 0], [3, 4, 0], [4, 4, 0], [0, 0, 1], [1, 0, 1], [2, 0, 1], [3, 0, 1], [4, 0, 1], [0, 1, 1], [1, 1, 1], [2, 1, 1], [3, 1, 1], [4, 1, 1], [0, 2, 1], [1, 2, 1], [2, 2, 1], [3, 2, 1], [4, 2, 1], [0, 3, 1], [1, 3, 1], [2, 3, 1], [3, 3, 1], [4, 3, 1], [0, 4, 1],[1,4,1],[2,4,1],[3,4,1]…仔细地将您的结果与OP要求的结果进行比较。它是[[0,0,0,0],[0,0,1],[0,0,2],…]确切地说,运行您的解决方案会输出错误的结果。不是吗。追加[a,b,c]?这会使顺序与OP要求的顺序相反。您确定吗?在我的机器上运行它:[[0,0,0],[1, 0, 0], [2, 0, 0], [3, 0, 0], [4, 0, 0], [0, 1, 0], [1, 1, 0], [2, 1, 0], [3, 1, 0], [4, 1, 0], [0, 2, 0], [1, 2, 0], [2, 2, 0], [3, 2, 0], [4, 2, 0], [0, 3, 0], [1, 3, 0], [2, 3, 0], [3, 3, 0], [4, 3, 0], [0, 4, 0], [1, 4, 0], [2, 4, 0], [3, 4, 0], [4, 4, 0], [0, 0, 1], [1, 0, 1], [2, 0, 1], [3, 0, 1], [4, 0, 1], [0, 1, 1], [1, 1, 1], [2, 1, 1],[3,1,1]、[4,1,1]、[0,2,1]、[1,2,1]、[2,2,1]、[4,2,1]、[0,3,1]、[1,3,1]、[2,3,1]、[3,3,1]、[0,4,1]、[1,4,1]、[2,4,1]、[3,4,1]、[3,4,1]……将您的结果与OP要求的结果仔细比较。结果是[[0,0,0,0,0,1]、[0,1]、[0,1]、[0,0,1]、[0,2]、[0,2]、[0,2]、[0,1]、[0,2]、[0,2]、[0,2]、[。