jan*_*ane 4 python for-loop list
n = [3, 5, 7]
def double(lst):
for x in lst:
x *= 2
print x
return lst
print double(n)
Run Code Online (Sandbox Code Playgroud)
为什么不回归n = [6, 10, 14]呢?
还应该有一个更好的解决方案看起来像,[x *=2 for x in lst]但它也不起作用.
关于for循环和列表的任何其他提示将非常感激.
为什么不回归
n = [6, 10, 14]呢?
因为n,或者lst在内部调用double,永远不会被修改.x *= 2等价x = x * 2于数字x,只重新绑定名称 x而不更改它引用的对象.
要查看此内容,请修改double如下:
def double(lst):
for i, x in enumerate(lst):
x *= 2
print("x = %s" % x)
print("lst[%d] = %s" % (i, lst[i]))
Run Code Online (Sandbox Code Playgroud)
要在适当位置更改数字列表,您必须重新分配其元素:
def double(lst):
for i in xrange(len(lst)):
lst[i] *= 2
Run Code Online (Sandbox Code Playgroud)
如果您不想就地修改它,请使用理解:
def double(lst):
return [x * 2 for x in lst]
Run Code Online (Sandbox Code Playgroud)