假设我有一个列表mylist
,我将其定义为[1, 2, 3, 4, 5]
。如何在for
循环中将列表的每个元素加倍?
我知道你可以这样做:
for i in range(len(mylist)):
mylist[i] *= 2
我也知道你可以列出清单:
mylist = [2*i for i in range(1, 6)
但有没有办法像这样做?
for num in mylist:
#code goes here
我尝试过这样的事情:
for num in mylist:
num *= 2
但num
是一个局部变量,所以这不会修改mylist
,而只是num
。有谁知道这样做的好方法?
答案 0 :(得分:4)
通常的方法是使用列表推导,直接遍历列表项,而不是通过索引间接迭代。
mylist = [1, 2, 3, 4, 5]
mylist = [2 * num for num in mylist]
print(mylist)
<强>输出强>
[2, 4, 6, 8, 10]
用新列表对象替换mylist
。这通常没问题,但有时您想要修改现有对象,例如当其他对象引用mylist
时。你可以通过切片分配来做到这一点。
mylist[:] = [2 * num for num in mylist]
答案 1 :(得分:1)
这是不可能的,因为你不应该尝试在以这种方式循环它时更改列表。我会坚持你另外两种操纵列表的方法
答案 2 :(得分:1)
使用显式for
循环。迭代时使用enumerate并为每个项目分配一个新值。
mylist = [1, 2, 3, 4, 5]
for i, n in enumerate(mylist):
mylist[i] = n * 2
请注意 - 不要更改列表中的项目数:Remove items from a list while iterating