18320182322 发表于 2020-4-18 00:29:30

这两个输出结果应该怎么解释啊???

{:5_99:}
为什么结果会这样

Judie 发表于 2020-4-18 00:40:39

{:10_330:} 为什么呢

XiaoPaiShen 发表于 2020-4-18 05:33:08

1. 因为遍历 列表 a, 第一次循环取出第一个元素
然后删除了列表中的第一个元素
当循环第二遍时,因为列表少了一个元素,就会取第三个元素了
所以就删除了元素 3
最终剩余了 元素 2 在列表中。
总结:这种编程风格不好,容易混淆,所以在for 循环中,不要改变 in 后面的列表

2. remove 方法直接修改 调用它的列表实例,没有返回值,所以第一次循环后,就将 列表设为 None,再返回循环时,in 试图在None 中取元素,就会出错。

heidern0612 发表于 2020-4-18 07:30:34

奇葩的问题....

就像卖东西,这个东西你已经卖出去,已经消失了,你还想再卖一遍。

这个东西你去哪找?

Judie 发表于 2020-4-18 08:29:18

XiaoPaiShen 发表于 2020-4-17 16:33
1. 因为遍历 列表 a, 第一次循环取出第一个元素
然后删除了列表中的第一个元素
当循环第二遍时,因为列表 ...

{:10_275:} 我明白了 谢谢小哈龙

suchocolate 发表于 2020-4-18 09:52:24

for遍历列表时实际遍历的是index

XiaoPaiShen 发表于 2020-4-18 09:53:44

Judie 发表于 2020-4-18 08:29
我明白了 谢谢小哈龙

不用客气

jkluoling1992 发表于 2020-4-18 10:28:42

语法
remove()方法语法:
list.remove(obj)
参数
obj -- 列表中要移除的对象。
返回值
该方法没有返回值但是会移除列表中的某个值的第一个匹配项。

没有返回值,,你要把返回赋给谁呢,,而且这种遍历是危险的,,他只根据长度来,,第一次remove 1,,length变为2,,下次就remove 3 了,,,

zltzlt 发表于 2020-4-18 13:10:19

remove() 方法没有返回值,它只是在原列表上操作,所以不用 a = a.remove(i),直接 a.remove(i)
页: [1]
查看完整版本: 这两个输出结果应该怎么解释啊???