[Python]Array.arrayの2番目に小さい値を取得するには?

python

どうも、ちょげ(@chogetarou)です。

Array.arrayの2番目の最小値を取得する方法を紹介します。

スポンサーリンク

方法

Array.arrayの2番目に小さい値を取得する方法は、2つあります。

sorted()

ひとつは、sorted()を使う方法です。

まず、対象のArray.arrayをSetに変換します。

sorted()を呼び出し、引数にSetを指定します。

そして、sorted()の結果のインデックス「1」にアクセスします。

#arr=対象のArray.array
new_arr = set(arr)
result = sorted(new_arr)[1] #2番目に小さい値を取得

上記のsorted()のインデックス「1」にアクセスすることで、Array.arrayの2番目に小さい値を取得できます。

Array.arrayをSetに変換しないと、最小値を持つ要素が複数存在する場合に、2番目に小さい値を取得できません。

使用例

import array

nums = array.array('i', [10, 3, 5, 8, 1, 7, 2, 9])

new_nums = set(nums)
result = sorted(new_nums)[1]

print(result)
出力:
4

min()

もうひとつは、min()を使う方法です。

まず、対象のArray.arrayから新しいSetを生成します。

次に、Setからremove()を呼び出します。

remove()の引数でmin()を呼び出し、min()の引数にSetを指定します。

そして、min()を呼び出し、引数にSetを指定します。

#arr=対象のArray.array
new_arr = set(arr)
new_arr.remove(min(new_arr))
result = min(new_arr) #2番目に小さい値を取得

上記のmin()は、Array.arrayの2番目に小さい値を取得します。

使用例

import array

nums = array.array('i', [10, 3, 5, 8, 1, 7, 2, 9])


new_nums = set(nums)

new_nums.remove(min(new_nums))

result = min(new_nums)


print(result)
出力:
2

まとめ

Array.arrayの2番目に小さい値を取得する方法は、次の2つです。

  • sorted()を使う方法
    new_arr = set(arr)
    result = sorted(new_arr)[1]
  • min()を使う方法
    new_arr = set(arr)
    new_arr.remove(min(new_arr))
    result = min(new_arr)

コメント

タイトルとURLをコピーしました