嘿,伙计们,女孩们,这里完全没有人,但我一辈子都搞不懂为什么这个函数不能把40以下的值都排序出来。我真的很惊讶,因为这是一个如此基本的任务,即使对我来说,但我已经盯着它看了一段时间了,搞不懂它
def sort(list):
list.sort()
for num in list:
if num < 40:
list.remove(num)
return list
print (sort([-31, 0, 5, 76, 12, 32, 4, 88]))
Output : [0, 5, 32, 76, 88]
Tags:
你的功能是正确地排序值。 问题是,在迭代过程中删除项时,会弄乱列表迭代器。循环浏览列表中的元素时,不能从列表中删除元素
当你移除一个元素时,你不会重置迭代器,在幕后,它使用一个索引来迭代,所以当你移除这个项目时,你会将下一个项目向后移动一个索引,然后告诉循环向前移动,跳过几个项目
看到发生什么了吗? 另一种方法是使用一段时间:
另一种方法是,由于您对列表进行了排序,因此可以找到40以下较大数字的索引,然后一次性删除其前面的所有元素:
list[:n]
代码返回从索引n到列表末尾的子集哦,一定要检查一下
max_b40_index
不是无。你可能有一个没有任何数字低于40的列表相关问题 更多 >
编程相关推荐