我有一个for
循环如下:
a=[1,2,3,4,5]
for i in a:
i=6
我希望a
的每个元素成为6
。
现在我知道这个for
循环不会这样做,因为我只是改变了i
所指的内容。
我可以写:
a=[1,2,3,4,5]
for i in len(range(a)):
a[i]=6
但这似乎不是Pythonic。做这种事情的好方法是什么?显然,将所有内容设置为6
是一个人为的例子,实际上,我会做更复杂(和精彩)的事情。因此,答案应该概括。
答案 0 :(得分:2)
for
- 变量始终是一个简单的值,而不是引用;没有办法知道它来自列表,因此在更改时写回列表。
虽然您需要len(a)
(或range
),但xrange
方法通常是惯用法:
for i in range(len(a)):
或者,通常使用enumerate
函数来获取索引和值:
for i, v in enumerate(a):
a[i]= v+1
列表理解可能是一个很好的选择,例如:
a= [6 for v in a]
答案 1 :(得分:1)
这可能是map()
的一个很好的用途,取决于你在现实生活中所做的事情。例如:
a = map(lambda x: 6, a)
答案 2 :(得分:1)
您可以使用:
>>> a = [1, 2, 3, 4, 5]
>>> a = [6] * len(a)
>>> a
[6, 6, 6, 6, 6]