这是我想要做的一件非常简单的事情,如果我编写一段单独的代码,它甚至可以在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
答案 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[:]