Python中將字典加入列表引出的乙個疑問

2021-10-25 02:57:50 字數 1749 閱讀 9469

dict在python裡是object,不屬於primitive type(即int、float、string、none、bool)。這意味著你一般操控的是乙個指向object(物件)的指標,而非object本身,所以dict的id不會變化。同時,dict的兩種賦值方式,也對dict的id產生影響:

dict["key"]=value

dict=

有如下**:

list_01 = 

dict_01 = {}

for i in range(5):

dict_01["num"] = i

print('字典id為:',id(dict_01))

print("list_01內容為:\n", list_01)

其結果為:

字典id為: 2076921129000

字典id為: 2076921129000

字典id為: 2076921129000

字典id為: 2076921129000

字典id為: 2076921129000

list_01內容為:

[, , , , ]

在此情況下,dict的id不變。

對上面的**進行簡單改動,將字典定義到for迴圈內:

list_01 = 

# dict_01 = {}

for i in range(5):

dict_01 = {}

dict_01["num"] = i

print('字典id為:',id(dict_01))

print('list_01內容最終為:\n',list_01)

執行結果為:

字典id為: 1755302422568

字典id為: 1755302422640

字典id為: 1755302423000

字典id為: 1755302423216

字典id為: 1755302422712

list_01內容最終為:

[, , , , ]

無論將dict定義在迴圈內

list_01 = 

for i in range(5):

dict_01 = {}

dict_01 =

print('字典id為:',id(dict_01))

print("list_01內容為:\n", list_01)

還是將dict定義在迴圈外

list_01 = 

dict_01 = {}

for i in range(5):

dict_01 =

print('字典id為:',id(dict_01))

print("list_01內容為:\n", list_01)

字典id均會變化:

字典id為: 2120832084080

字典id為: 2120832084440

字典id為: 2120832084656

字典id為: 2120832084152

字典id為: 2120833462344

list_01內容為:

[, , , , ]

知乎中有相關問題的解釋:

Python 深入列表

在學習python的列表推導式前,我們先學習三個東西 lambda map filter lambda是在一行中編寫乙個函式,但如果這個函式被多次呼叫,則其效能會受到一定的影響,其格式為 函式名 lambda 引數1,引數2 函式體如 add lambda a1,a2 a1 a2該lambda表示式...

易語言列表框防止專案重複加入列表框

版本 2 程式集 視窗程式集 啟動視窗 子程式 啟動視窗 建立完畢 列表框1.現行選中項 0 載入 1 子程式 按鈕1 被單擊 列表框1.加入專案 編輯框1.內容,編輯框1.內容 子程式 按鈕2 被單擊,不重複加入 1 如果 列表框1.選擇 編輯框1.內容 1 列表框1.加入專案 編輯框1.內容,資...

在Python中將列表轉換為列表

在資料分析期間,我們面臨著將列表中的每個元素轉換為子列表的方案。因此,在本文中,我們將需要乙個普通列表作為輸入,並轉換成列表列表,其中每個元素都成為乙個子列表。這是一種非常簡單的方法,其中我們建立了for迴圈來讀取每個元素。我們將其作為列表讀取,並將結果儲存在新列表中。alist mon tue w...