Python中意外的列表行为

2024-03-29 00:38:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把一张单子倒过来,我成功地做到了,但在工作的中途,我发现了一些奇怪的东西。下面的程序按预期工作,但未符合条件的行list\u reversed[i]=list[len(list)-1-i]print(list[i])(当然,注释最后一行会导致list发生变化。我没看到什么?我的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])

Tags: in程序版本forlenrangelist单子
3条回答

list_reversed = list不制作列表的副本。它只是使list_reversed成为指向同一列表的新名称。你可以在这个网站上看到很多关于这个的问题,一些列在右边的相关问题中。在

以下内容:

list_reversed = list 

使两个变量引用同一个列表。当你改变一个,它们都会改变。在

要复制,请使用

^{pr2}$

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

list_reversed = reversed(list)

另外,我建议不要使用list作为变量名,因为它隐藏了the builtin。在

当您这样做时:

list_reversed = list

您不需要创建list的副本,而是创建一个新的名称(变量),该名称(变量)引用了以前的列表。您可以通过添加:

^{pr2}$

相关问题 更多 >