感谢您的解释:
Why does not the + operator change a list while .append() does?
我是编程新手,并且从udacity编程课程入门入手。
基于上述内容,我了解了为什么append会更改原始列表,而+
操作会创建一个新列表。但是我感到困惑的是,为什么+=
运算符最终会改变原始列表。 +=
与附加值不同。
我在下面通过Udacity发布了我的代码的简化版本,Dave Evans介绍了有关列表属性的练习
list1 = [1,2,3,4,5]
list2 = [1,2,3,4,5]
def proc(mylist):
mylist = mylist + [6, 7]
def proc3(mylist):
mylist += [6, 7]
print "demonstrating proc"
print list1
proc(list1)
print list1 # prints [1,2,3,4,5]
print 'demonstrating proc3'
print list2
proc3(list2
print list2 # prints [1,2,3,4,5,6,7]
当print list2
和list2
都执行相同的操作时,为什么最后一个proc
最终会更改原始的proc3
?
mylist += [6, 7]
是否与mylist = mylist + [6, 7]
相同?为什么+=
操作最终会像附录操作一样导致原始列表发生变异,而mylist = mylist + [6, 7]
却没有更改原始列表
简而言之,即使在类似于追加附加功能的函数之外调用+=
操作,最终也会更改列表。
谢谢 饶