Python中出现意外的列表行为

rma*_*ues 1 python behavior list

我想要反转一个列表,我设法这样做,但在工作的中间我发现了一些奇怪的东西.以下程序按预期工作,但是不可见的行list_reversed [i] = list [len(list)-1-i]print(list [i])(当然评论最后一行)导致列表中的更改.我没看到什么?我的Python版本是3.3.3.先感谢您.

list=[1,2,3,4,5,6]

list_reversed=list

for i in range(0,len(list)):

    #list_reversed[i]=list[len(list)-1-i]
    #print(list[i])

    print(list[len(list)-1-i])
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 5

下列:

list_reversed = list 
Run Code Online (Sandbox Code Playgroud)

使两个变量引用相同的列表.当你换一个时,它们都会改变.

要制作副本,请使用

list_reversed = list[:]
Run Code Online (Sandbox Code Playgroud)

更好的是,使用内置函数而不是编写自己的函数:

list_reversed = reversed(list)
Run Code Online (Sandbox Code Playgroud)

PS我建议不要使用list变量名,因为它会影响内置.