相关疑难解决方法(0)

在迭代期间修改列表和字典,为什么它在dict上失败?

让我们考虑这个迭代列表的代码,同时每次迭代删除一个项目:

x = list(range(5))

for i in x:
    print(i)
    x.pop()
Run Code Online (Sandbox Code Playgroud)

它会打印出来0, 1, 2.由于前两次迭代删除了列表中的最后两个元素,因此仅打印前三个元素.

但是如果你在dict上尝试类似的东西:

y = {i: i for i in range(5)}

for i in y:
    print(i)
    y.pop(i)
Run Code Online (Sandbox Code Playgroud)

它将打印0,然后提升RuntimeError: dictionary changed size during iteration,因为我们正在迭代它时从字典中删除一个键.

当然,在迭代期间修改列表是不好的.但是为什么RuntimeError不像字典那样提出?这种行为有什么好的理由吗?

python iteration dictionary loops list

29
推荐指数
2
解决办法
1441
查看次数

标签 统计

dictionary ×1

iteration ×1

list ×1

loops ×1

python ×1