python:如何修改循环中的列表元素?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (541)

如何在for循环期间修改列表项?

在Python中遍历列表时,我无法在没用列表推导式的情况下修改元素。供参考:

li = ["spam", "eggs"]
for i in li:
    i = "foo"

li
["spam", "eggs"]

li = ["foo" for i in li]
li 
["foo", "foo"]

那么,为什么我不能通过Python中的循环来修改元素呢?

提问于
用户回答回答于

可以:

for idx in range(len(li)):
    i = li[idx]
    i = 'foo'

或者遍历索引:

for idx in range(len(li)):
    li[idx] = 'foo'

或使用:

for idx, item in enumerate(li):
    li[idx] = 'foo'
用户回答回答于

实际上,您没有修改列表,而是创建一个新列表,然后将其分配给包含前一个列表的变量。

如果您想修改您的列表,可以使用:

>>> li = ["spam", "eggs"]
>>> for i,_ in enumerate(li):
        li[i] = "foo"
>>> li
 ['foo', 'foo']

或与(在Python2.7中用xrange,在python 3中使用range):

>>> for i in xrange(len(li)):
        li[i] = "foo"
>>> li 
 ['foo', 'foo']

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励