所以我想删除未知整数列表中的最大整数。基本上我有这个:
list=[x,y,z...]
我知道如何找到最大的整数:
max=max(list)
但我想要做的是能够从列表中删除该号码。我怎么能这样做?
答案 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