2017-06-01 225 views
0

一個任務,我是想在Python單行做賦值操作循環 像在Python中的for循環

[a[i]=b[i] for i in range(0,len(b))] 

這似乎是錯誤的。有沒有一種方法可以在python單行循環中使用賦值操作?

+1

順便說一句,你正在使用的不是一個for循環,但一列表理解。 – jotasi

+0

'a'和'b'具有相同的長度嗎?你的用例是什麼?也許有更好的方法(沒有循環或理解)。 – MSeifert

回答

1

您在這裏混合了兩個範例,即循環和列表理解。列表理解將是

a = [x for x in b] 
+1

或者爲什麼不是'a = b [:]' –

+1

也是這樣,但我認爲OP正試圖學習列表理解來作爲循環列表的替代方案。這明確表達了這個想法。 – Elan

1

複製列表可以在Python中以多種方式完成。

  • 使用切片

    A = B [:]

  • 使用list()

    一個=列表(B)

+0

https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list –

1

無需一個循環。您可以使用一個切片賦值:

a[0:len(b)]= b 
1

你可以使用:

[a.__setitem__(i, b[i]) for i in range(0,len(b))] 

__setitem__是實現指標賦值方法。然而,僅僅因爲副作用而進行列表理解是一個很大的禁忌。

你可以簡單地使用切片分配:

a[:len(b)] = b 
0

在Python 3它可以這樣做:

a = b.copy()