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

时间:2016-01-03 11:09:33

标签: python python-3.x

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

list=[x,y,z...]

我知道如何找到最大的整数:

max=max(list)

但我想要做的是能够从列表中删除该号码。我怎么能这样做?

4 个答案:

答案 0 :(得分:4)

首先,不要将list用作变量名,而是隐藏内置list的名称。以下代码将从列表lst创建一个新列表,其中每个元素都是最大值(请记住可能有多个此类元素)已删除,并将其重新分配给名称lst

max_el = max(lst)
lst = [x for x in lst if x != max_el]

如果你想只删除一次最大元素(即它的第一次出现),并在原地进行,@KevinGuan在评论中的答案可以正常工作:

>>> lst = [1,2,3,1,3]
>>> lst.remove(max(lst))
>>> lst
[1, 2, 1, 3]

答案 1 :(得分:3)

你可以这样做:

>>> numbers = [3, 5, 77, 8]
>>> max_number = max(numbers)
>>> numbers[:] = [number for number in numbers if number != max_number]
>>> numbers
[3, 5, 8]

删除意味着您要保留原始对象。 numbers[:] =执行此操作:

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

答案 2 :(得分:2)

只需使用:

>>> l = [1, 2, 2, 3, 3]
>>> m = max(l)
>>> [i for i in l if i != m]
[1, 2, 2]

答案 3 :(得分:2)

>>> mx = max(lst)
>>> lst = list(filter(lambda x: x!=mx, lst)) #Python3, filter returns generator, so convert it to list