赋值运算符和列表如何工作?- Python [复制]

How do Assignment Operators and Lists Work? - Python [duplicate]

提问人:TaranYourAss 提问时间:11/26/2022 更新时间:11/26/2022 访问量:157

问:

赋值运算符对列表的工作方式似乎与对整数的工作方式不同:

>>> list1 = [1,2,3,4,5]
>>> newlist1 = list1
>>> print(id(list1))
140282759536448
>>> print(id(newlist1))
140282759536448
>>> newlist1.append(6)
>>> print(id(newlist1))
140282759536448
>>> print(list1)
[1, 2, 3, 4, 5, 6]
>>> print(newlist1)
[1, 2, 3, 4, 5, 6]

赋值运算符的工作方式与整数类似:

>>> int1 = 1
>>> newint1 = int1
>>> print(id(int1))
140282988331248
>>> print(id(newint1))
140282988331248

但是修改其中一个整数会创建一个新 ID:

>>> newint1 = newint1 + 1
>>> print(id(newint1))
140282988331280
>>> print(id(int1))
140282988331248

为什么修改列表不会创建新 ID?

另外,您将如何为列表创建新 ID?

python-3.x 列表 整数 赋值运算符

评论

1赞 Klaus D. 11/26/2022
好吧,你修改了列表,但你替换了整数。
1赞 Adrien Derouene 11/26/2022
您的归因只是一个名称,因此您可以影响对两个名称的相同引用。如果要创建一个新列表,可以通过添加 来复制第一个列表。整数(str 和其他一些)以不同的方式处理以优化时间和空间内存。您可以在此线程中找到更多信息:stackoverflow.com/questions/55206114/...[:]

答:

0赞 Yafaa Ben Tili 11/26/2022 #1

您应该使用,因为当您这样做时,您不是在创建新列表,而是在引用相同的列表newlist1 = list1.copy()newlist1 = list1

0赞 Jonas 11/26/2022 #2

在 Python 中,当您将列表分配给新变量时,您只会将列表的地址传递给它。 这就是函数返回相同值的原因。id()

如果要实际复制列表,则必须使用以下函数:copy()

initList = ["a", "b", "c"]
print(id(initList))

copiedList = initList.copy()
print(id(copiedList))