首页 > 解决方案 > 我打印我的值,但它附加了初始值

问题描述

我有这段代码,它运行一种称为 Tomkins-Paige 算法的算法。该算法创建序列的排列。问题是代码打印了不同的排列 p,但是当我尝试将它附加到列表时,它只附加了初始 p,即 p = [1,2,3,4]。

import numpy as np 

n = 4
p = [i for i in range(1,n+1)]
c = [1 for i in range(1,n+1)]

i = 2
print(p)
listp = []

while i <= n:
    shift = np.roll(p[:i],-1)

    for k in range(len(shift)):
        p[k] = shift[k] 
    if c[i-1] < i:
        c[i-1] += 1
        i = 2
        print(p, c, i )
        listp.append(p)
    else:
        c[i-1] = 1
        i += 1

有关算法的更多信息:https ://en.wikipedia.org/wiki/Tompkins%E2%80%93Paige_algorithm

提前致谢 :)

标签: pythonpython-3.x

解决方案


推荐阅读