python - 如何将列表中的所有值加倍

标签 python list for-loop

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/

相关文章:

mysql - 如何告诉 SQL 使用另一个表作为输入值来运行命令?

python - 如何在循环中增加一个值

c - 不明白为什么C程序崩溃,字符串指针数组

python - numpy.linalg.svd 不按降序返回西格玛

python - 请问,为什么我的代码中 "Popcorn"没有被 "Coke"替换?

python - 结合/拼接 pandas DataFrames 与条件

list - 如何从列表中删除所有重复项?

list - htaccess 列出目录并为其重写规则

python - python正则表达式中的重复模式

python - 调度 Python 脚本 - Windows 7