5
我偶然發現了這種奇特的行爲意外:爲什麼list(my_list)修改對象?
>>> a = []
>>> a[:] = ['potato', a]
>>> print a
['potato', [...]]
>>> print list(a)
['potato', ['potato', [...]]]
通過什麼機制並呼籲list(a)
以自己的字符串表示展開遞歸的一個水平?
我偶然發現了這種奇特的行爲意外:爲什麼list(my_list)修改對象?
>>> a = []
>>> a[:] = ['potato', a]
>>> print a
['potato', [...]]
>>> print list(a)
['potato', ['potato', [...]]]
通過什麼機制並呼籲list(a)
以自己的字符串表示展開遞歸的一個水平?
list()
製作淺拷貝。外部列表不再與其包含的列表相同。它按照您的預期打印。
...
僅在項目包含自身時才顯示 - 即同一個對象。 list(a)
使該列表的副本,所以內部a
不是同一個對象。它只顯示...
,當它到達「一個內部」時,而不是「內部list(a)
」。