无法修改循环Python中的列表元素?

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

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

在Python中遍历列表时,我无法在没有列表理解的情况下修改元素。供参考:

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

li
["spam", "eggs"]

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

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

提问于
用户回答回答于

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

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

或与(在Python#number0#中,在python 3中使用范围):

>>> for i in xrange(len(li)):
        li[i] = "foo"
>>> li 
 ['foo', 'foo']
用户回答回答于

方法:

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

如果你对i赋值,并不影响li[idx]。要么是遍历索引:

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

或使用:

for idx, item in enumerate(li):
    li[idx] = 'foo'

扫码关注云+社区

领取腾讯云代金券

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