我读过Python元组创建后无法修改。例如,元组对象不允许使用项目分配。但是,如果我有一个元组内的列表对象,那么我可以追加到列表中。那么,不应该Python不允许这样做,因为我们基本上修改了一个元组?修改元组中的列表
Q
修改元组中的列表
4
A
回答
2
从python的documentation:
包含对可变对象的参考时,后者的值被改变可以改变不可变容器对象的数值;然而容器仍然被认为是不可变的,因为它包含的对象的集合是不能改变的。因此,不变性与具有不变的价值不完全相同,它更加微妙。
在某些方面这意味着元组内的对象仍然有同样身份或id
:
>>> t
([0],)
>>> id(t[0])
140282665826440
>>> t[0].append(1)
>>> t
([0, 1],)
>>> id(t[0])
140282665826440 # same as in above
1
元组的不变性很浅:您无法更改元组引用的对象。但是如果这些对象本身是可变的,你可以改变它们。
相关问题
- 1. Python的修改列表内的元组
- 2. 修改列表保持的元组
- 3. 复制和修改元组列表
- 4. 修改所有元组在Python列表
- 5. 修改循环中的列表元素
- 6. 修改列表元素
- 7. Ansible修改列表元素
- 8. 创建列表的列表。修改元素列表中的
- 9. 修改数组列表
- 10. 修改元组的阵列,斯卡拉
- 11. 列表到元组中 - 修改列表反映在元组中,但清空列表不会在元组中改变
- 12. 修改元组SML
- 13. 修改列表元素与Python中的列表理解
- 14. Java表数组列表修改
- 15. 修改列表的列表OCaml中
- 16. 列表修改
- 17. 列表修改
- 18. Python3:保留修改列表中的更改元素
- 19. 系统修改列表元素
- 20. 遍历和修改列表元素
- 21. 更改元组列表中的第一个元组值
- 22. Javascript:修改代码以添加元素到数组/列表
- 23. 如何修改列表中的对象中的元素?
- 24. 修改队列中的顶层元素
- 25. 如何使用Java Streams将未修改列表中的元素包含在修改列表中?
- 26. R - 通过列表中的data.frames循环 - 修改列(列表元素)的字符
- 27. 修改列表值
- 28. Makefile,修改列表
- 29. 根据分组修改列表中元素属性的最佳方法
- 30. 阵列元素被修改
我的猜测是,元组仅持有到列表的引用。所以你可以修改引用的内容,而不是引用本身。 – grc 2014-10-19 02:08:14
在这里看到详细的答案:https://stackoverflow.com/questions/9755990/why-can-tuples-contain-mutable-items – Totem 2014-10-19 02:08:55