我讀過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. 修改列表元素
- 8. Ansible修改列表元素
- 9. 創建列表的列表。修改元素列表中的
- 10. 修改數組列表
- 11. Python:如何修改列表中的元組?
- 12. 修改元組的陣列,斯卡拉
- 13. 列表到元組中 - 修改列表反映在元組中,但清空列表不會在元組中改變
- 14. 修改元組SML
- 15. 修改列表元素與Python中的列表理解
- 16. 修改多個元素的類列表
- 17. Java表數組列表修改
- 18. 修改列表中的值
- 19. 更改列表中的元組值
- 20. 修改列表的列表OCaml中
- 21. 將元組列表更改爲python列表中的列表
- 22. 修改列表
- 23. 修改列表
- 24. 列表修改
- 25. 修改表列
- 26. 列表修改
- 27. Python3:保留修改列表中的更改元素
- 28. 從元組列表修改每個元組(並最終只刪除)
- 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