You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:40:28