Python 为什么list.reverse()函数除了反转指定的列表外,还要反转未指定的列表?
我正在上一门基础计算机科学课程,在编写一些基本的python代码时遇到了一个奇怪的情况。(添加了用于调试的打印功能) 这个函数应该检查输入的单词是否是回文。但是,当我对单词\u list\u reversed变量使用list.reverse()函数时,它也会反转单词\u list变量 输入一个单词:hello [h',e',l',l',o'] [o',l',l',e',h'] [o',l',l',e',h'] 真的Python 为什么list.reverse()函数除了反转指定的列表外,还要反转未指定的列表?,python,Python,我正在上一门基础计算机科学课程,在编写一些基本的python代码时遇到了一个奇怪的情况。(添加了用于调试的打印功能) 这个函数应该检查输入的单词是否是回文。但是,当我对单词\u list\u reversed变量使用list.reverse()函数时,它也会反转单词\u list变量 输入一个单词:hello [h',e',l',l',o'] [o',l',l',e',h'] [o',l',l',e',h'] 真的 正如您所看到的,在世界列表变量被反转之前,单词列表变量是它应该的样子。我不是在寻
正如您所看到的,在世界列表变量被反转之前,单词列表变量是它应该的样子。我不是在寻找寻找回文的替代解决方案,只是回答为什么会发生这种情况。在Python中,与许多其他OO语言一样,列表是通过引用分配的。因此,当您这样做时:
word\u list\u reversed=word\u list
您只需将word\u列表\u反转
指向与word\u列表
相同的内存地址即可。这就是为什么当你反转一个列表时“两个列表”都会改变的原因——因为它们是相同的
要使其在您的示例中起作用,您可以执行以下操作:
from copy import copy
word_list_reversed = copy(word_list)
这将在一个全新的列表中复制单词列表的元素。执行时
word_list_reversed = word_list
你把他们列在同一张名单上
word_list_reversed = word_list