7

Pythonで提供された値の次の最小値を取得するにはどうすればよいですか? そのための組み込み関数はありますか?

>>>num_list=[1,2,3,4]
>>> min(num_list)
1
>>> max(num_list)
4

3 の次に小さいもの、または 2 の次に大きいものを見つけるにはどうすればよいですか? 期待される結果は、それぞれ 2 と 3 です。

4

7 に答える 7

3

3 の次に低い値:

max([x for x in num_list if x < 3])

2 の次に大きいもの:

min([x for x in num_list if x > 2])
于 2015-04-06T13:12:40.763 に答える
1

使用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]
于 2015-04-06T17:17:09.027 に答える
0

提供された回答は良いですが、提案を行うことができれば、次のように値を繰り返すことができる場合があります

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
>>> 
于 2015-04-06T13:12:52.960 に答える