一个任务,我是想在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