n = [3, 5, 7]
def double(lst):
for x in lst:
x *= 2
print x
return lst
print double(n)
为什么不返回 n = [6, 10, 14]
?
还应该有一个更好的解决方案,类似于 [x *=2 for x in lst]
但它也不起作用。
任何有关 for 循环和列表的其他提示将不胜感激。
最佳答案
Why doesn't this return
n = [6, 10, 14]
?
因为n
,或lst
正如里面所说的 double
,从未被修改。 x *= 2
相当于 x = x * 2
对于数字 x
,并且只会重新绑定(bind)名称 x
而不改变它引用的对象。
要查看此内容,请修改 double
如下:
def double(lst):
for i, x in enumerate(lst):
x *= 2
print("x = %s" % x)
print("lst[%d] = %s" % (i, lst[i]))
要就地更改数字列表,您必须重新分配其元素:
def double(lst):
for i in xrange(len(lst)):
lst[i] *= 2
如果您不想就地修改它,请使用理解式:
def double(lst):
return [x * 2 for x in lst]
关于python - 如何将列表中的所有值加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17659767/