Python 添加到列表与更改列表元素
看看下面的代码Python 添加到列表与更改列表元素,python,Python,看看下面的代码 testList = ["This", "Is", "A", "Test"] dummyList = testList dummyList = dummyList + ["Hello"] 我原以为testList的内容会被更改,因为dummyList引用了testList,我们只是添加了一个新元素,但这并没有发生。现在看下面的代码 testList = ["This", "Is", "A", "Test"] dummyList = testList dummyList[0] =
testList = ["This", "Is", "A", "Test"]
dummyList = testList
dummyList = dummyList + ["Hello"]
我原以为testList的内容会被更改,因为dummyList引用了testList,我们只是添加了一个新元素,但这并没有发生。现在看下面的代码
testList = ["This", "Is", "A", "Test"]
dummyList = testList
dummyList[0] = 'Hello'
在这段代码中,testList中确实发生了变化。为什么对dummyList的更改会更改第二段代码中testList的内容,而不是第一段代码中的内容 通过使用
=
操作符,可以使testList
指向与dummyList
相同的内存地址,因此它们本质上是相同的对象。这可以使用is
进行验证:
testList = ["This", "Is", "A", "Test"]
dummyList = testList
>>> testList is dummyList
True
但当您重新指定它时,它会创建一个新列表,现在不再指向同一对象:
dummyList = dummyList + ['hello']
>>> testList is dummyList
False
但是,通过使用dummyList[0]='Hello'
进行适当的更改,它只是对dummyList
进行更改,该列表仍然指向与testList
相同的内容。区别在于没有新的任务
您可以创建一个副本来避免这种情况:
testList = ["This", "Is", "A", "Test"]
dummyList = testList.copy()
>>> testList is dummyList
False
在第一个示例中,不编辑列表,只构建一个新列表,并将该新列表存储在
dummyList
变量中。但旧名单从未改变
在第二个示例中,编辑列表。由于dummyList
和testList
引用的是同一个列表,因此这两个变量确实以'Hello'
作为第一个元素显示列表
通过使用.append(..)
,可以通过添加元素来编辑列表:
ctestList=[“This”、“Is”、“A”、“Test”]
dummyList=testList
dummyList=dummyList.append(“Hello”)
基本上与问题相同,只是没有函数。
ctestList = ["This", "Is", "A", "Test"]
dummyList = testList
dummyList = dummyList.append("Hello")