Pythonで提供された値の次の最小値を取得するにはどうすればよいですか? そのための組み込み関数はありますか?
>>>num_list=[1,2,3,4]
>>> min(num_list)
1
>>> max(num_list)
4
3 の次に小さいもの、または 2 の次に大きいものを見つけるにはどうすればよいですか? 期待される結果は、それぞれ 2 と 3 です。
Pythonで提供された値の次の最小値を取得するにはどうすればよいですか? そのための組み込み関数はありますか?
>>>num_list=[1,2,3,4]
>>> min(num_list)
1
>>> max(num_list)
4
3 の次に小さいもの、または 2 の次に大きいものを見つけるにはどうすればよいですか? 期待される結果は、それぞれ 2 と 3 です。
3 の次に低い値:
max([x for x in num_list if x < 3])
2 の次に大きいもの:
min([x for x in num_list if x > 2])
使用heapq.nlargest
してheapq.nsmallest
import heapq
num_list = [1, 2, 3, 4]
heapq.nlargest(2, num_list)
heapq.nsmallest(2, num_list)
#>>> [4, 3]
#>>> [1, 2]
提供された回答は良いですが、提案を行うことができれば、次のように値を繰り返すことができる場合があります
num_list = [2, 2, 4, 4, 6, 7, 8, 9]
...など、リストを並べ替えて最初のインデックスを取得するだけでは、探しているものではない場合があります。
最初に渡すことでset()
、各エントリがシングルトンであることを確認できます。
def sorted_ordered_list(sequence):
return sorted(list(set(sequence)))
次にlist
、インデックス 0 の最低値から最高値まで、探している値の返された値にインデックスを付けることができます。
例:
>>> my_list = [1, 5, 4, 3, 6, 3, 8, 3, 6, 7, 4, 2, 6, 7, 9, 8, 8]
>>> sorted_ordered_list(my_list)
[1, 2, 3, 4, 5, 6, 7, 8, 9] # now index the list for the desired value
>>>