Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 添加到列表与更改列表元素_Python - Fatal编程技术网

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")