从列表中删除最小的数字
Removing the lowest numbers from a list
我正在尝试编写一个函数来删除最小的数字,然后对列表中的剩余数字进行平均。有没有办法在不使用 sorted()
或 sort()
的情况下从列表中删除最低的两个或更多数字?就像结合使用 min()
和 range()
。
我目前拥有的:
lst = [90, 100, 95, 95]
lst.remove(min(lst))
print(sum(lst) / len(lst))
我会 运行 它通过一个循环
>>> lst = [90,100,95,95]
>>> for i in range(0, 1): # This removes n=1 items
... lst.remove(min(lst))
...
>>> lst
[100, 95, 95]
>>> lst = [90,100,95,95]
>>> for i in range(0, 2): # This removes n=2 items
... lst.remove(min(lst))
...
>>> lst
[100, 95]
list.remove
删除列表中 第一个 匹配值。为了删除所有出现的当前最小数字,您必须调用它 list.count(min(list))
次。
这是从 lst
中删除 n
最小数字的函数,不涉及 list.remove
:
def remove_n_smallest(lst, n):
for _ in range(n):
m = min(lst)
lst[:] = (x for x in lst if x != m)
这是您问题中 lst
的示例:
>>> remove_n_smallest(lst, 2)
>>> lst
[100]
>>> sum(lst) / len(lst)
100.0
我正在尝试编写一个函数来删除最小的数字,然后对列表中的剩余数字进行平均。有没有办法在不使用 sorted()
或 sort()
的情况下从列表中删除最低的两个或更多数字?就像结合使用 min()
和 range()
。
我目前拥有的:
lst = [90, 100, 95, 95]
lst.remove(min(lst))
print(sum(lst) / len(lst))
我会 运行 它通过一个循环
>>> lst = [90,100,95,95]
>>> for i in range(0, 1): # This removes n=1 items
... lst.remove(min(lst))
...
>>> lst
[100, 95, 95]
>>> lst = [90,100,95,95]
>>> for i in range(0, 2): # This removes n=2 items
... lst.remove(min(lst))
...
>>> lst
[100, 95]
list.remove
删除列表中 第一个 匹配值。为了删除所有出现的当前最小数字,您必须调用它 list.count(min(list))
次。
这是从 lst
中删除 n
最小数字的函数,不涉及 list.remove
:
def remove_n_smallest(lst, n):
for _ in range(n):
m = min(lst)
lst[:] = (x for x in lst if x != m)
这是您问题中 lst
的示例:
>>> remove_n_smallest(lst, 2)
>>> lst
[100]
>>> sum(lst) / len(lst)
100.0