Python:覆盖两个变量

Pio*_*trK 3 python sorting variables overwrite

在我使用python期间,我遇到了一个阻塞问题.我有一些SomeFunction应该做一些简单的计算(并且还要对它进行排序 - 我删除那段代码以使其更清晰)在给定的整数向量上并返回新的.主要问题是,每个内部循环的结果必须成为下一个的输入,但变量k和X似乎在内存中具有相同的地址.

功能如下:

def SomeFunction(k, N):
    X = range(N);
    for i in range(N):
        for j in range(3):
            X[i] = k[i]*2;
        print "X:";
        print X;
        print "k -> :";
        print k
        k = X;
        print "============================";
    return k;
Run Code Online (Sandbox Code Playgroud)

它产生输出:

    X:
    [0, 1, 2, 3, 4, 5, 6, 7]
    k -> :
    [0, 1, 2, 3, 4, 5, 6, 7]
    ============================

    X:
    [0, 8, 2, 3, 4, 5, 6, 7]
    k -> :
    [0, 8, 2, 3, 4, 5, 6, 7]
    ============================

第一个循环的输出是可以的,因为第一个元素是0,但是对于其余的循环,你可以看到问题.X应该有新值,而k应该是相同的.有谁有任何想法如何解决这个问题?

the*_*eye 5

当你说

k = X;
Run Code Online (Sandbox Code Playgroud)

您没有创建Xinto 的副本k,但是您正在制作两者X并k指向同一列表.您可以像这样创建列表的副本

k = X[:]
Run Code Online (Sandbox Code Playgroud)

注意: Python不期望;在行尾.