循环中的列表修改

2024-05-23 18:57:37 发布

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

我是Python的新手,但我明白不应该这样做,所以请将以下代码片段视为纯粹的教育性代码:-)

我目前正在阅读“Learning Python”,并试图完全理解以下示例:

>>> L = [1, 2, 3, 4, 5]
>>> for x in L:
...    x += 1
...
>>> L
[1, 2, 3, 4, 5]

我不知道这种行为是否与数值类型的不变性有关,所以我运行了以下测试:

^{2}$

问题:是什么让列表在第一个代码中保持不变,在第二个代码中发生了变化?

我的直觉是语法有误导性,并且:

  • ^一个整数的{}实际上意味着x = x + 1(因此分配了一个新的引用)
  • ^{{cd3}表示列表中的位置

Tags: 代码in教育性示例类型列表for语法
1条回答
网友
1楼 · 发布于 2024-05-23 18:57:37

问题:是什么使列表在第一个代码中保持不变,在第二个代码中发生了更改?

在第一个代码中,列表是一系列(不可变的)整数。循环设置x依次引用序列的每个元素。x += 1更改x以引用比前面提到的值x多1个的不同整数。原始列表中的元素保持不变。在

在第二个代码中,如果是(可变)列表序列的列表。循环设置x依次引用序列的每个元素。x += ['_']因为x引用了一个列表,这扩展了{}和{}所引用的列表。在

相关问题 更多 >