Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Element_Immutability_Mutability - Fatal编程技术网

Python 更改列表的元素会影响/不影响派生列表

Python 更改列表的元素会影响/不影响派生列表,python,list,element,immutability,mutability,Python,List,Element,Immutability,Mutability,我不理解Python中列表的以下异常行为,如果有人能解释一下,我将不胜感激: 片段1: myList = [1,2,3,4] A = [myList]*3 print(A) myList[2]=45 print(A) 输出: [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]] [[1, 2, 45, 4], [1, 2, 45, 4], [1, 2, 45, 4]] [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4] [1, 2, 3,

我不理解Python中列表的以下异常行为,如果有人能解释一下,我将不胜感激:

片段1:

myList = [1,2,3,4]
A = [myList]*3
print(A)
myList[2]=45
print(A)
输出:

[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
[[1, 2, 45, 4], [1, 2, 45, 4], [1, 2, 45, 4]]
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
这对我来说很有意义,因为我们没有执行额外的复制函数来“屏蔽”myList上的元素操作

片段2:

myList = [1,2,3,4]
A = myList*3
print(A)
myList[2]=45
print(A)
输出:

[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
[[1, 2, 45, 4], [1, 2, 45, 4], [1, 2, 45, 4]]
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

为什么对myList的更改没有反映在列表中?

在第一种情况下,您直接复制了对myList的3个引用。在第二种情况下,您复制了对
myList
内容的3个引用,这使得您与原始
myList

没有任何连接,因为您仅在
a
赋值之后才为myList[2]赋值。