将变量的值存储在另一个变量中,并将其重新分配给python中循环内的变量

时间:2013-09-16 11:41:08

标签: python-2.7

这是我想要做的一件非常简单的事情,如果我编写一段单独的代码,它甚至可以在powershell中使用。但在我的程序中,它似乎不起作用:

这是我的代码:http://ideone.com/vV5ZNS

x = list(str(raw_input("Please enter a string: ")))

y = x
z = []
i = 0
j = 1
k = -1
n = len(x)
while i<n:
    i = k + 1
    j = i + 1

    while j<n:
        x = y   #does not reassign the orignal string array to x.
        k = i
        while j<n:
            z.insert(i, x[i])
            if (x[i] == x[j]):
                j = j+1
            else:
                x[i] = x[j]
                x[j] = z[i]
                print (x)
                print "\n"
                j = j+1
                i = i+1

1 个答案:

答案 0 :(得分:0)

听起来您正试图将原始输入列表存储在y中,以便您可以通过程序中途恢复x的值。

这当前不起作用,因为y = x会导致x和y引用相同的列表。修改一个将修改另一个。例如:

>>> x = [1,2,3]
>>> y = x
>>> y.append(4)
>>> print x
[1, 2, 3, 4]

此处,对y进行了更改,并相应地修改了x

要保留数组的原始值,您应该复制它。这通常通过使用空白切片(即x[:])索引数组来完成。例如:

>>> x = [1,2,3]
>>> y = x[:]
>>> y.append(4)
>>> print x
[1, 2, 3]

此处,对y进行了更改,并且未修改x。只要您想将x分配给y,就可以将此技术应用于代码,反之亦然。

x = list(str(raw_input("Please enter a string: ")))

y = x[:]

#later, within the while loop:
    while j<n:
        x = y[:]