Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何查找和删除未知整数列表中的最高整数_Python_Python 3.x - Fatal编程技术网

Python 如何查找和删除未知整数列表中的最高整数

Python 如何查找和删除未知整数列表中的最高整数,python,python-3.x,Python,Python 3.x,所以我想删除未知整数列表中最大的整数。基本上我有: list=[x,y,z...] 我知道如何找到最大整数: max=max(list) 但是我想做的是能够从列表中删除这个数字。我如何才能做到这一点?首先,不要将列表用作变量名,您正在隐藏内置列表的名称。下面的代码将从列表lst创建一个新列表,其中每个元素都是最大值。请记住,可能会删除多个这样的元素,并将其重新指定给名称lst 如果您只想删除最大元素一次,即它第一次出现,并在适当的位置执行,则注释中@KevingGuan的答案很好: >

所以我想删除未知整数列表中最大的整数。基本上我有:

list=[x,y,z...]
我知道如何找到最大整数:

max=max(list)
但是我想做的是能够从列表中删除这个数字。我如何才能做到这一点?

首先,不要将列表用作变量名,您正在隐藏内置列表的名称。下面的代码将从列表lst创建一个新列表,其中每个元素都是最大值。请记住,可能会删除多个这样的元素,并将其重新指定给名称lst

如果您只想删除最大元素一次,即它第一次出现,并在适当的位置执行,则注释中@KevingGuan的答案很好:

>>> lst = [1,2,3,1,3]
>>> lst.remove(max(lst))
>>> lst
[1, 2, 1, 3]
只需使用:

>>> l = [1, 2, 2, 3, 3]
>>> m = max(l)
>>> [i for i in l if i != m]
[1, 2, 2]
您可以这样做:

>>> numbers = [3, 5, 77, 8]
>>> max_number = max(numbers)
>>> numbers[:] = [number for number in numbers if number != max_number]
>>> numbers
[3, 5, 8]
删除意味着您希望保留原始对象。数字[:]=是否执行以下操作:

numbers = [3, 5, 77, 8]
print(id(numbers))
max_number = max(numbers)
numbers[:] = [number for number in numbers if number != max_number]
print(id(numbers))
印刷品:

4421673608
4421673608

你试过什么?最简单的解决方案可能是对列表进行排序并删除相应的extrement.list.poplist.indexmaxlist??如果一个最大值value@SIslam:l.removemaxl也可以工作…x=sortlist;new_x=x[:-1]@IronFist在Python2中我更喜欢过滤器,但在Python3中,由于额外调用列表,大多数情况下它们比理解更难阅读。我希望map和filter有一个默认参数,比如makelist=False。我在我的答案中添加了您的方法,希望您不介意。若你们想把它添加到你们的文件中,我会删除它。@timgeb:噢,我对这个问题的评论。没问题,很好:谢谢,这正是我需要的是,另一个选项可能是filterlambda x:x=maxlst,lst@SIslam...better将maxlst赋值给变量,而不是在变量的每个值上调用它lst@SIslam是的,那也行。请记住,asker使用的是Python3,其中filter返回一个filter对象,您必须手动列出该对象,即listfilter…谢谢,这太完美了
4421673608
4421673608
>>> mx = max(lst)
>>> lst = list(filter(lambda x: x!=mx, lst)) #Python3, filter returns generator, so convert it to list