在 100 天的 python (anjella yu) 代碼中,老師將具有相同名稱的物件附加到串列中,我無法弄清楚如何創建同名物件。有人可以解釋一下嗎?
my_list=[]
For _ in range(10):
new_object=turtle()
my_list.apend(new_object)
如您所見,創建了 10 個具有相同名稱的物件并將其附加到 my_list
uj5u.com熱心網友回復:
串列只是物件的集合。您可以參考每個的唯一方法是通過其數字索引(例如 my_list[0]、my_list[1] 等)。因此,它們沒有“名字”。因此,假設turtle() 回傳一個物件,新物件只是被添加到my_list 中的下一個位置。
這與集合和字典不同。在集合中,一個物件只能存在一次。所以,如果你發送同一個物件兩次,它只會在集合中結束一次。
字典也是如此。字典中的“鍵”是它所代表的物件的一種名稱。如果您提供具有相同密鑰的兩個物件,則您提供的第二個物件將覆寫第一個物件。
uj5u.com熱心網友回復:
new_object只是一個參考turtle. my_list.append(new_object)將同一物件的另一個參考添加到串列中;new_object當名稱指向不同的物件時,該參考不會改變。
換句話說,您不是將名稱 new_object添加到串列中,而是對名稱所指物件的參考。(您也可以在完全my_list.append(turtle())不定義變數的情況下撰寫new_object;結果將是相同的。)
回圈完成后,您將擁有一個包含對 10 個不同物件的參考的串列,并且名稱new_object仍然指的是最后創建的物件。
uj5u.com熱心網友回復:
我在這里稍微修改了你的代碼,但本質是一樣的。
>>> my_list = []
>>> for _ in range(10):
... new_object = dict()
... my_list.append(new_object)
...
>>> my_list
[{}, {}, {}, {}, {}, {}, {}, {}, {}, {}]
>>> my_list[0]
{}
>>> my_list[1]
{}
>>> id(my_list[0])
140200988731072
>>> id(my_list[1])
140200988731136
>>> id(my_list[3])
140200988731264
>>> id(my_list[4])
140200988731328
>>> id(my_list[2])
140200988731200
>>>
如您所見,my_list 的第一個、第二個或第三個物件是可見的,它們都沒有任何內容,但它們是不同的。
在 Pythonid中(內置函式)用于識別賦予 Python 記憶體中每個物件的唯一哈希碼。因此,當我檢查它們時,每個物件都有一個唯一的 ID。
正如您現在可能理解的那樣,Python 中的每個物件都是由其唯一的 id 而不是其可見名稱來標識的。Python list 也使用指標(內部)來保存它的物件。所以每個唯一/新物件都有一個新的記憶體位置或新的指標位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/448352.html
下一篇:將陣列轉換為表模式的物件
