国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中循環后使用list.append()數據被覆蓋問題的解決

2020-02-15 22:06:58
字體:
來源:轉載
供稿:網友

前言

最近發現一個問題,在一次爬蟲實戰中,需要將字典加入列表中,意外的情況出現了!!!下面簡單分析一下出現的狀況:

list = []dic = {}for i in range(5): dic['num'] = i list.append(dic) print(id(dic))print(list)136652096136652096136652096136652096136652096[{'num': 4}, {'num': 4}, {'num': 4}, {'num': 4}, {'num': 4}]

結果出乎意料,并不是我們簡單認為的

[{'num': 0}, {'num': 1}, {'num': 2}, {'num': 3}, {'num': 4}]

用我自己的理解是:

如上圖,每一個dic都給list一個位置,但你的dic在循環外,也就說每次循環你給的都是一個地址,dic的值改變,新一次的循環值就會覆蓋上一次循環的值,list取到的值也改變。

正確做法:

list = []for i in range(5): dic = {} dic['num'] = i list.append(dic) print(id(dic))print(list)138383888136652192138383408138384272138383792[{'num': 0}, {'num': 1}, {'num': 2}, {'num': 3}, {'num': 4}]

正確做法是將dic放入循環內,這樣每次循環都會是一個新的dic,分配不同的地址。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林站長站的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三穗县| 利辛县| 宁陕县| 玛纳斯县| 余姚市| 夏河县| 贞丰县| 万荣县| 九寨沟县| 大冶市| 湘乡市| 合山市| 措勤县| 扎囊县| 宜都市| 西青区| 定陶县| 夏津县| 巴楚县| 宁阳县| 平和县| 合作市| 白玉县| 临西县| 韶山市| 甘孜县| 泾阳县| 宝鸡市| 西贡区| 塘沽区| 精河县| 高邑县| 平凉市| 黔东| 三江| 舞阳县| 剑河县| 佛坪县| 玛多县| 滦平县| 东至县|