27

私はPythonに完全に精通しているわけではありませんが、スキルを磨きながらグッドプラクティスを学び/維持することに興味があります。

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

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

希望の答えが得られましたが、適切に正しい答えが得られましたか?

4

2 に答える 2

48

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

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

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

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

于 2011-04-13T23:00:42.563 に答える
0

max要素を削除し、リストを変数に格納し、min要素と同じにする必要がありました。変数に格納した場合にremove関数を使用すると、出力としてnoneが返されます。だからそれを保存するには

arr = [1, 2, 5, 4, 3]
arr.sort()
remmax = arr[0:-1]
remmin = arr[1:]
print(remmax)
print(remmin)
于 2022-01-20T15:04:03.740 に答える