我需要弄清楚这里发生了什么,真正的原因是什么:
array = [0, 1, 2]
for element in array:
element += 1
print array #CHANGES NOTHING
double_array = [[0,1], [2,3]]
for element in double_array:
element[0] = "Changed!"
print double_array #THIS WORKS
for element in double_array:
element = ["Doesn't work!"]
print double_array #NOPE
我很直观地理解这一点,但是我不确定其背后的理论。我的感觉是,python中的变量名是这种空灵的东西,如果直接在其后加上“ =”,它会立即崩溃。如果变量引用列表,则可以在其后使用“ .append”,也可以在其后使用“ [0] =“,它的作用类似于C中的引用,但是如果直接为其分配内容,则python就像,“哦,您不再需要此名称了吗?好吧,现在它仅指代您分配给它的东西,而没有别的东西了”。
特别是,对于我的第一个案例,“整数是不可变的”对我来说似乎是错误的。在我的第三种情况下,列表似乎与整数一样不可变。对此的正确解释是什么?
温温酱
蝴蝶不菲
相关分类