我是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
(因此分配了一个新的引用)
问题:是什么使列表在第一个代码中保持不变,在第二个代码中发生了更改?
在第一个代码中,列表是一系列(不可变的)整数。循环设置
x
依次引用序列的每个元素。x += 1
更改x
以引用比前面提到的值x
多1个的不同整数。原始列表中的元素保持不变。在在第二个代码中,如果是(可变)列表序列的列表。循环设置}和{}所引用的列表。在
x
依次引用序列的每个元素。x += ['_']
因为x
引用了一个列表,这扩展了{相关问题 更多 >
编程相关推荐