有人可以向我解释为什么下面的代码会输出我的作品吗?
firstlist = [1,2,3,4,5,6,7,7]
alias = firstlist
firstlist = firstlist*2
print(firstlist)
print(alias)
输出:
[1,2,3,4,5,6,7,7,1,2,3,4,5,6,7,7]
[1,2,3,4,5,6,7,7]
为什么将firstlist乘以2并更新更新不会反映在' alias'中。我的印象是因为'别名'并且' firstlist'指向相同的值,对#firstlist'所做的任何更改都是应该通过别名来反映'同样。
答案 0 :(得分:0)
这一行有两件事:
firstlist
您将firstlist
乘以2,然后将其分配给一个恰好firstlist
的变量 - 这不是就地修改。因此,alias
和firstlist
指向不同的对象。
相反,如果您要修改>>> firstlist = [1,2,3,4,5,6,7,7]
>>> alias = firstlist
>>> firstlist.extend(firstlist)
>>> print(firstlist)
[1, 2, 3, 4, 5, 6, 7, 7, 1, 2, 3, 4, 5, 6, 7, 7]
>>> print(alias)
[1, 2, 3, 4, 5, 6, 7, 7, 1, 2, 3, 4, 5, 6, 7, 7]
,例如,通过附加它,您会看到两个变量仍然指向同一个对象,并且具有相同的值:
pubspec.yaml