我正在尝试编写一个函数,用于删除最低数字,然后平均列表中剩余的数字。有没有办法在不使用sorted()
或sort()
的情况下从列表中删除最低的两个或更多数字?像使用min()
与range()
结合使用。从列表中删除最低数字
我有什么至今:
lst = [90, 100, 95, 95]
lst.remove(min(lst))
print(sum(lst)/len(lst))
我正在尝试编写一个函数,用于删除最低数字,然后平均列表中剩余的数字。有没有办法在不使用sorted()
或sort()
的情况下从列表中删除最低的两个或更多数字?像使用min()
与range()
结合使用。从列表中删除最低数字
我有什么至今:
lst = [90, 100, 95, 95]
lst.remove(min(lst))
print(sum(lst)/len(lst))
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
谢谢!现在我遇到了一些麻烦实施。当我运行代码时,它不会打印任何东西。 –
@DA_F:你是否执行过函数定义_and_下面的例子? – vaultah
我得到它的工作!我非常感谢你的帮助! –
,我只想通过一个循环
>>> 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'不会删除第二次出现的95. – vaultah
鉴于存在排在第二低的数字,你甚至期待的输出是什么? – jonrsharpe
只是数字的平均值。删除90和平均余下的数字让我97.5。 –
移除2个最小数字后,'lst'应该包含什么? – vaultah