Python 我想知道,这两个代码示例之间的区别是什么。一个有效,另一个无效

Python 我想知道,这两个代码示例之间的区别是什么。一个有效,另一个无效,python,Python,上面的代码用于获取输入列表中的项目,然后将列表中的每个项目乘以2,然后返回列表 我想知道,为什么第一个有效,第二个无效。第二个比较短。第一个函数获取索引,然后使用索引调用该项,然后进行乘法运算。但是第二个直接乘以这个项目。第二个更简洁,那么为什么它不起作用呢?在第一个示例中,您使用 # This is Sample one and it does work. but it is long n = [3, 5, 7] def double_list(x): for i in range(0

上面的代码用于获取输入列表中的项目,然后将列表中的每个项目乘以2,然后返回列表


我想知道,为什么第一个有效,第二个无效。第二个比较短。第一个函数获取索引,然后使用索引调用该项,然后进行乘法运算。但是第二个直接乘以这个项目。第二个更简洁,那么为什么它不起作用呢?

在第一个示例中,您使用

# This is Sample one and it does work. but it is long
n = [3, 5, 7]
def double_list(x):
    for i in range(0, len(x)):
        x[i] = x[i] * 2
    return(x)
print(double_list(n))

# This is sample two and it does not work.
n = [3, 5, 7]
def double_list(x):
    for i in x:
        i  = i * 2
    return(x)
print(double_list(n))
因此,使用局部变量“i”访问带有索引i的列表元素,然后更改其内容

然而,在第二个示例中,您甚至不访问列表x,因为您只使用局部变量“i”。因此,您不会更改列表,并且列表保持不变。你可以很容易地看出这一点,因为如果你正在访问你的列表,你会写一些类似的东西

x[i] = x[i] * 2


如果您还有其他问题,请随时提问。

第二个问题仅修改x列表的本地副本elements@PawełKordowski Observ
x[i]=x[i]*2
i=i*2
第二个仅修改列表中的元素,而不将值追加或保存到新列表中,在我的第二个示例中,第一个使用从range函数获得的索引来修改列表中的项目,但是我怎么不访问列表呢?我写道:对于x列表中的每一项:该项应乘以2。当我将该值乘以2时,我将其保存回原始值的相同位置。我很困惑,因为我认为我可以直接访问项目,而不是使用lsit的索引来访问lsit中的项目,因为第二个示例中的for语句说:对于x列表中的每个项目。。。。。。。
x[i] =
x =