为什么list.remove()的行为不符合预期?

发布于 2021-01-29 17:14:25

from pprint import *

sites = [['a','b','c'],['d','e','f'],[1,2,3]]

pprint(sites)

for site in sites:
        sites.remove(site)

pprint(sites)

输出:

[['a', 'b', 'c'], ['d', 'e', 'f'], [1, 2, 3]]
[['d', 'e', 'f']]

为什么不是None或空列表[]?

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

    这是因为您在迭代列表时正在修改列表。你绝对不应该那样做。

    对于这样的事情,您应该复制列表并对其进行迭代。

    for site in sites[:]:
        sites.remove(site)
    


知识点
面圈网VIP题库

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

去下载看看