一個任務,我是想在Python單行做賦值操作循環 像在Python中的for循環
[a[i]=b[i] for i in range(0,len(b))]
這似乎是錯誤的。有沒有一種方法可以在python單行循環中使用賦值操作?
一個任務,我是想在Python單行做賦值操作循環 像在Python中的for循環
[a[i]=b[i] for i in range(0,len(b))]
這似乎是錯誤的。有沒有一種方法可以在python單行循環中使用賦值操作?
您在這裏混合了兩個範例,即循環和列表理解。列表理解將是
a = [x for x in b]
或者爲什麼不是'a = b [:]' –
也是這樣,但我認爲OP正試圖學習列表理解來作爲循環列表的替代方案。這明確表達了這個想法。 – Elan
複製列表可以在Python中以多種方式完成。
使用切片
A = B [:]
使用list()
一個=列表(B)
https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list –
無需一個循環。您可以使用一個切片賦值:
a[0:len(b)]= b
你可以使用:
[a.__setitem__(i, b[i]) for i in range(0,len(b))]
的__setitem__
是實現指標賦值方法。然而,僅僅因爲副作用而進行列表理解是一個很大的禁忌。
你可以簡單地使用切片分配:
a[:len(b)] = b
在Python 3它可以這樣做:
a = b.copy()
順便說一句,你正在使用的不是一個for循環,但一列表理解。 – jotasi
'a'和'b'具有相同的長度嗎?你的用例是什麼?也許有更好的方法(沒有循環或理解)。 – MSeifert