将数字的每个元素乘以数字

AdR*_*AdR 6 python

我希望将列表中的所有元素乘以数字.我知道其他方法,但我想知道为什么这不起作用?我得到了与输出完全相同的列表.

lst = eval(input('enter a list'))
for num in lst:
     num = num * 2
print(lst)
Run Code Online (Sandbox Code Playgroud)

Kev*_*uan 6

它不起作用,因为你在for列表上使用循环并定义/更改num全局变量,而不是lst列表中的元素.

例如:

>>> l = [1, 5, 8]
>>> for num in l:
...     num *= 2
...     
... 
>>> num
16
>>> l
[1, 5, 8]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在第一个循环中,num1(第一个元素l),并确定1 * 2给出2.

然后,num变成5因为5是在列表中的第二个元素.之后num * 2,num成为10.

在第二个for循环中,它变为8 * 2,16.它不会再次改变,因为for循环结束了.

但是,在此循环期间,您没有更改列表的任何内容.因为for获取列表中的元素,并将其放入临时变量中.

当您在循环中更改该临时变量时for,您没有更改列表中的任何内容.