|
发表于 2021-12-26 00:31:33
|
显示全部楼层
本帖最后由 傻眼貓咪 于 2021-12-26 00:32 编辑
你的代码问题如下:
1.)和题目要求不符,题目要求排序,并放回列表里(意思就是不能改变或删除元素,只能改变位置)
2.)以你的代码为例,如果你是问说为什么会删除 2 个 3?很简单啊:
数组原样:[5, 3, 8, 98, 3, 87, 3, 3, 2]
当 remove 遇到第一个 i = c(也就是 i = 3)时,进行删除,删除后的列表变成:
[5, 8, 98, 3, 87, 3, 3, 2]
删除元素索引位置 1,下一次循环位置 2(也就是跳过 元素 8,因为 8 变成在第 1 位)
当 remove 再次遇到第一个 i = c(也就是 i = 3)时,进行删除,删除后的列表变成:
[5, 8, 98, 87, 3, 3, 2]
删除元素索引位置 3,下一次循环位置 4(也就是跳过 元素 87,因为 87 变成在第 3 位)
当 remove 再次遇到第一个 i = c(也就是 i = 3)时,进行删除,删除后的列表变成:
[5, 8, 98, 87, 3, 2]
删除元素索引位置 4,下一次循环位置 5(也就是跳过 元素 3,因为 87 变成在第 5 位)
一般初学者不建议在循环语句 for 或 while 里面用 pop() 和 remove(),不然就会像现在一样,自己更本不懂已经删除到哪里了(每次进行删除,索引位置完全弄错!)
|
|