冰红茶TD 发表于 2024-10-22 19:59:14

for循环抽取列表元素

s =
for each in s:
    print(each)
    s.remove(each)
    print(s)

这个代码执行下来结果是:
1

3

5

3

1


求助大佬:为什么没有按顺序挨个提取?

FishC 发表于 2024-10-22 20:04:57

在你的代码中,`for`循环直接作用于列表`remove`方法,当你在循环中移除元素时,列表的大小发生了变化,从而导致循环行为出乎意料。

例如,考虑列表``:

1. 第一次循环时,`each`是`1`,移除后列表变成``。
2. 因为移除`1`后列表缩短了,第二次循环时`each`直接变为`3`(跳过了`2`),移除后列表是``。
3. 接着`each`变为`5`,移除后列表是``。
4. 第四次循环,`each`是`6`,移除后列表是``,但循环结束。

为了按顺序移除并打印元素,可以创建列表的副本来循环,例如使用切片:

s =
for each in s[:]:# 使用s[:]创建s的副本
    print(each)
    s.remove(each)
    print(s)

这样就不会影响原列表的循环过程。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

冰红茶TD 发表于 2024-10-22 20:08:44

FishC 发表于 2024-10-22 20:04
在你的代码中,`for`循环直接作用于列表`remove`方法,当你在循环中移除元素时,列表的大小发生了变化,从 ...

明白了,感谢大佬{:5_92:}

FishC 发表于 2024-10-22 20:08:50

冰红茶TD 发表于 2024-10-22 20:08
明白了,感谢大佬{:5_92:}

不客气!如果还有其他问题,随时问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

ydwb 发表于 2024-10-22 23:06:29

666
页: [1]
查看完整版本: for循环抽取列表元素