我正在嘗試編寫一個函數,用於刪除最低數字,然後平均列表中剩餘的數字。有沒有辦法在不使用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