2017-06-01 182 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()