私は、最も低い数字を削除して、残りの数字を平均する関数を書こうとしています。 sorted()
またはsort()
を使用せずに、リストから最低の2つ以上の数字を削除する方法はありますか? min()
とrange()
を組み合わせて使用するように。私がこれまで持って何リストから一番低い数字を削除する
:
lst = [90, 100, 95, 95]
lst.remove(min(lst))
print(sum(lst)/len(lst))
私は、最も低い数字を削除して、残りの数字を平均する関数を書こうとしています。 sorted()
またはsort()
を使用せずに、リストから最低の2つ以上の数字を削除する方法はありますか? 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:以下の例の関数定義を実行しましたか? – 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の2番目の出現を削除しないため、 – vaultah
があることを考えます2番目に低い数字のネクタイ、あなたが期待しているアウトプットは何ですか? – jonrsharpe
数字の平均値です。 90を取り除いて残りの数を平均すると、97.5になります。 –
2番目に小さい数字を削除した後、 'lst'には何を入れるべきですか? – vaultah