python中改變list中list值的問題

2021-07-12 03:21:43 字數 625 閱讀 5960

l = 

s = [0,0,0]

for i in range(3):

l[1][1]=1

print l

如上**,定義乙個空list,新增元素也為list型別。本意是想改變list l中乙個值,使其結果為[[0,0,0],[0,1,0],[0,0,0]],但執行的結構下圖所示,將list l中的所有元素都改變了。

為找到原因,檢視python的官方**找到原因。如下圖

list s 的值並沒被copy到l中,l中的元素只是s的乙個引用,且每個值都是指向s,所以改變乙個值,會改變所有的值。

為了得到結構,本人使用了深度複製,將要修改的元素複製出來,修改後在複製回去。**和結構如下

import copy

l =

s = [0,0,0]

for i in range(3):

m = copy.deepcopy(l[1])

m[1]=1

l[1]=m

print l

本文如果有不對和可以改進的地方,希望可以讀者可以提出。特別是如果有更簡便的方法,希望可以告知,一起學習

python中list的remove 中的坑

摘要 對於python中的remove 函式,官方文件的解釋是 remove first occurrence of value.大意也就是移除列表中等於指定值的第乙個匹配的元素。常見用法 a 1,2,3,4 a.remove 1 然後a就是 2,3,4 對於a 1,1,1,2 其結果也是 1,1,...

Python中的List推導

list推導 list prehension 看它的英文名就夠煩人的了,我總無法記清 prehension的正確拼寫 為了防止我將這一優秀的特性也忘記,還是將它通俗的描述一下吧。官方教程中說list推導是一種建立list的簡潔方法,通常是乙個表示式跟著是乙個 for 的語句,然後是零個或多個 for...

python中list排序問題

用python實現list的排序方法 1 list列表排序 方法1.用list的內建函式list.sort進行排序 list.sort func none,key none,reverse false 方法2.用序列型別函式sorted list 進行排序 list 5,3,9,1 list 5,3...