在分析python列表時,當(dāng)我看到其他編程語言無法做到的事情時,我感到很驚訝。可以說我有一個名為my_listmy_list = [1,2,3,4,5,6,7,8,9,10] 接下來,當(dāng)我像my_list[9] = my_list #I didn't seen such things possible in C/C++而當(dāng)我打印的my_list,my_list[9]并且my_list[9][9],所有這些給出了相同的結(jié)果。my_list[1, 2, 3, 4, 5, 6, 7, 8, 9, [...]]my_list[9][1, 2, 3, 4, 5, 6, 7, 8, 9, [...]]my_list[9][9][1, 2, 3, 4, 5, 6, 7, 8, 9, [...]]我的理解是,my_list[9]是指同一個列表稱為my_list和[...]手段自我指涉列表即列表指向同一個列表,當(dāng)你按照type(my_list[9])它給我type的list。[1, 2, 3, 4, 5, 6, 7, 8, 9, [...]] | Does it like self referential struct pointer concept of C ?在上面的my_list示例中,我只是添加了簡單的測試運(yùn)行。我想知道類似的事情如何my_list[9] = my_list使python代碼性能更好。my_list[9] = my_list在python中使之成為可能的背后的實(shí)際意圖是什么?任何幫助將不勝感激。
2 回答

慕雪6442864
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個贊
可能是因?yàn)榱斜恚ㄅc其他容器一樣)存儲了引用,但為什么不引用自身呢?
該__str__
/__repr__
功能已經(jīng)得到保護(hù),免受會造成死循環(huán),并顯示一個省略號代替(...
)。
為什么有可能呢?因?yàn)檫@不是不可能的。如果Python要防止這種情況發(fā)生,則意味著每次在列表中添加對象時都要檢查自引用。這可能是用于維護(hù)參考高速緩存的額外O(n)存儲開銷,也可能是用于執(zhí)行參考搜索的O(n)時間開銷。
添加回答
舉報
0/150
提交
取消