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

发布于 2021-02-02 23:20:54

在Python中遍历列表时,如果没有列表理解,就无法修改元素。以供参考:

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

li
["spam", "eggs"]

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

那么,为什么不能通过Python中的循环修改元素?肯定有一些我想念的东西,但是我不知道是什么。我确定这是重复的,但是我找不到与此相关的问题,如果有链接,那就绰绰有余了。

关注者
0
被浏览
191
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    因为for i in li工作方式是这样的:

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

    所以如果你给i它分配任何东西都不会影响li[idx]

    解决方案是您所建议的,或者遍历索引:

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

    或使用enumerate

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看