自定义max_list函数处理动态更新列表时出现移除元素失败的问题求助
自定义max_list函数处理动态更新列表时出现移除元素失败的问题求助
我自己写了一个max_list函数,用来返回随机生成列表中的最大值(我知道Python有内置的max函数,这只是用来练习的)。代码如下:
import random L = [] rang = 100 #number size limit r = 10 #size of list for i in range(r): L.append(random.randint(0, rang)) def max_list(L): max_in_list = L[0] for j in range(len(L)): if max_in_list == rang: #if max_in_list is the highest it can be it must be the maximum return max_in_list elif L[j] > max_in_list: #if there is a value greater than max_in_list it becomes the new max_in_list max_in_list = L[j] if j+1 == r: return max_in_list elif j+1 == r: #if it reaches the end of the list it must be the largest return max_in_list
现在我想实现一个功能:把原列表中的最大元素逐个移除,同时把这些最大值添加到一个新列表里。比如对于列表ls = [1, 2, 3],应该先移除3,然后移除2,以此类推。
我写了这样的循环代码:
for k in range(len(L)): L.remove(max_list(L))
但实际运行时出问题了——看起来列表并没有更新,max_list(L)的结果一直是固定的。第二次迭代的时候,max_list(L)会返回None(因为第一次已经把那个最大值移除了),然后就抛出错误:
L.remove(max_list(L)) ValueError: list.remove(x): x not in list
举个具体的例子,比如原列表是ls = [1, 2, 3],第一次成功移除3,但第二次迭代时,它还是尝试移除3而不是2,最后就报错了。
我试了用内置的max()函数代替max_list(L),就可以正常运行,所以问题肯定出在我自己写的max_list函数里。想请教大家,我的max_list函数哪里写得有问题?
备注:内容来源于stack exchange,提问作者Skuba
相关产品推荐
相关产品推荐

