我希望将列表中的所有元素乘以数字.我知道其他方法,但我想知道为什么这不起作用?我得到了与输出完全相同的列表.
lst = eval(input('enter a list'))
for num in lst:
num = num * 2
print(lst)
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为你在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)
在这种情况下,在第一个循环中,num
是1
(第一个元素l
),并确定1 * 2
给出2
.
然后,num
变成5
因为5
是在列表中的第二个元素.之后num * 2
,num
成为10
.
在第二个for
循环中,它变为8 * 2
,16
.它不会再次改变,因为for
循环结束了.
但是,在此循环期间,您没有更改列表的任何内容.因为for
只获取列表中的元素,并将其放入临时变量中.
当您在循环中更改该临时变量时for
,您没有更改列表中的任何内容.
归档时间: |
|
查看次数: |
5635 次 |
最近记录: |