当前位置: 首页 > 面试题库 >

Python中的意外列表行为

田翰林
2023-03-14
问题内容

我想撤消一个列表,但是我设法做到了,但是在工作的中间我发现了一些奇怪的事情。下面的程序按预期工作,但list_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])

问题答案:

以下:

list_reversed = list

使两个变量引用相同的列表。当您更改一个时,它们都会更改。

要复制,请使用

list_reversed = list[:]

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

list_reversed = reversed(list)

PS我建议不要使用它list作为变量名,因为它会掩盖内置的。



 类似资料:
  • 问题内容: 我试图了解扩展在Python中是如何工作的,并且并没有达到我的期望。例如: 但我本来期望: 为什么返回None而不是扩展列表? 问题答案: 该方法将追加到现有数组并返回。在您的情况下,您正在动态创建一个数组-对其进行扩展,然后将其丢弃。该变量以返回值结束。

  • 我是Python的新手,我对Python处理空对象的方式有点困惑。 考虑这段代码; 我得到了这段代码的以下输出。 我假设由{}初始化的对象是有效对象。为什么Python不那样对待它?为什么要得到diff If条件的diff输出? 在C++中,当我说 如果obj不是NULL,它将进入IF块(不管它是垃圾值还是其他) 但当我翻译成Python时也是一样的。 为什么?我读到Python将{}计算为fal

  • 问题内容: 我需要在Python中创建列表列表,因此输入了以下内容: 该列表如下所示: 然后,我更改了最内在的值之一: 现在我的列表如下所示: 这不是我想要或期望的。有人可以解释发生了什么,以及如何解决吗? 问题答案: 当您编写时,您基本上得到了。也就是说,具有3个对same的引用的列表。然后,当您修改此单曲时x,可以通过对其的所有三个引用来看到它: 要修复它,您需要确保在每个位置创建一个新列表。

  • 问题内容: 我想我要跳过通过。但是我找不到多余的东西吗?任何get方法都会收到类似“不适用于字符串”之类的错误。 项目详细信息: 我的课: 我的putExtra: GetChild函数: 但是我找不到我应该怎么写来获取arrayList? 问题答案: 但是我找不到应该怎么写来获取arrayList 简短答案:您不能。您只能通过,然后使用 但是 。如果要通过Intent传递自定义对象,则必须实现以下

  • 问题内容: 您好,我在Python中使用字典来存储一些城市及其人口,例如: 现在,如果我使用命令,则会得到结果: 相反,如果我使用命令,则会得到的初始输入。 我对你的问题是如何的和变成和分别?所有这些信息是如何产生的?以及为什么将其存储在此处,因为我的初始输入表明我至少在我所知的范围内不需要这些额外的信息。 问题答案: 在Python 3.1中已对此进行了更改。在新页面上: Python现在使用D

  • 问题内容: 我不了解python中列表的行为: 为什么一个元素的分配影响另一个元素?感谢您的回答! 问题答案: 当您将一个列表相乘时,它会复制对该列表的引用,但不会创建该列表的副本。由于列表是可变的,因此在更改列表时,所有对其引用的引用都会更改。 用ASCII术语来说: 您可以清楚地看到更改list3将同时影响两个位置。 如果要创建可变长列表而不复制引用,则应执行以下操作: 在这里,我们使用列表理