web-dev-qa-db-ja.com

python整数のリストから最大値と最小値を削除する

私はPythonを完全に環境に配慮しているわけではありませんが、スキルを伸ばしながら、優れた実践を学び、維持することに興味があります。

数値のリストから高い値と低い値を削除したいのですが、その方法は知っていますが、これを行うためのより良い/好ましい方法があるかどうか知りたいです。

mylist = [1, 4, 0, 3, 2]
mylist.sort() #[0, 1, 2, 3, 4]
trimmed = mylist[1:-1] #[1, 2, 3]

望ましい答えが得られましたが、適切な答えは適切に得られましたか?

20
Esteban

アイテムの順序を変更したくない場合は、別の方法を次に示します。

_mylist = [1, 4, 0, 3, 2]
mylist.remove(max(mylist))
mylist.remove(min(mylist))
_

高値/安値のリストに重複がないと仮定します。重複がある場合は、そのうちの1つだけを削除してもかまいません。

これは、リストを2〜4回通過する必要があります。最大値と最小値を見つけるには2つ、削除する値を見つけるには最大2つです(両方ともリストの最後にある場合)。 Pythonループを記述して、1回のパスで最大値と最小値を見つけるループを書くことで、これを1つに減らすことができます(ループの後にインデックスで項目を削除できるように、それぞれのインデックスを覚えておいてください)。ただし、min()max()はCで実装されているため、これらをPythonコードに置き換えると、パフォーマンスを低下させる可能性がありますパスの数。

35
kindall