gpt4 book ai didi

python - Python如何交换列表中的元素?

转载 作者:行者123 更新时间:2023-11-28 21:48:44 24 4
gpt4 key购买 nike

我是 Python 的新手,刚刚了解了可变对象和不可变对象(immutable对象)。似乎当我们在列表中交换元素时,Python 会创建各个元素的副本,然后将它们复制回列表中。

enter image description here

在上面的例子中,我们从 n = [[1, 2], [3, 4]] 开始。第一个子列表[1, 2]占用ID#24,第二个子列表[3, 4]占用ID# 96。起初,我认为由于列表是可变的,交换后,ID# 24 持有 [3, 4] 和 ID# 96 持有 [1, 2]。但是正如我们在上面的测试中看到的那样,情况并非如此。相反,Python 以我们交换确定的方式指向对象;列表的第一个槽位指向 96,第二个槽位指向 24

当然,n 的 ID# 没有改变,所以 n 没有违反可变对象的定义。但是子列表交换的方式似乎是一个警告。您能否用更准确的语言确认或解释一下?

最佳答案

您对 ID 有误。 ID#24 是列表 [1,2] 的 ID。它不是 n 中索引 0 的内存地址或 ID。

您可能想尝试这样的示例来确认:

>>> x = [1, 2]
>>> id(x)
4332120256
>>> l = [x, 3]
>>> id(l[0])
4332120256
>>>

关于python - Python如何交换列表中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34821715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com