Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリストが厳密に昇順(増加順)になっているか確認する方法

リストを扱う際、その要素がどのような順序で並んでいるのかを確認したいケースがあります。本記事では、リスト内の要素が厳密に増加している(昇順に並んでいる)かどうかを判定する方法を、2つのアプローチから解説します。

方法1:all関数とzipを組み合わせる

この方法では、リストを先頭から1つずつスライスし、隣り合う要素同士を比較します。すべての比較が真であれば、そのリストは厳密に増加している順序だと判断できます。

サンプルコード

listA = [11,23,42,51,67]
# 対象のリスト
print("Given list : ",listA)
# all関数とzipを適用
if (all(i < j for i, j in zip(listA, listA[1:]))):
    print("Yes, List is sorted.")
else:
    print("No, List is not sorted.")

# 別のリストで再確認
listB = [11,23,21,51,67]
print("Given list : ",listB)
if (all(i < j for i, j in zip(listB, listB[1:]))):
    print("Yes, List is sorted.")
else:
    print("No, List is not sorted.")

実行結果

Given list : [11, 23, 42, 51, 67]
Yes, List is sorted.
Given list : [11, 23, 21, 51, 67]
No, List is not sorted.

方法2:itertools.starmapを使う

itertools.starmapは、イテラブルから取得した引数をもとに関数を計算するイテレータを生成します。ここでは、リストの要素を1つずつスライスしてzipでペアにし、operator.le(以下演算子)で比較を行います。なお、以下の例では数値の代わりに文字列を使用しています。

サンプルコード

import operator
import itertools

listA = ['Mon','Tue','Sun']
# 対象のリスト
print("Given list : ",listA)
# starmapで比較を実行
if all(itertools.starmap(operator.le,
    zip(listA, listA[1:]))):
print("Yes, List is sorted.")
else:
    print("No, List is not sorted.")

# 別のリストで再確認
listB = ['Mon','Sun','Tue']
print("Given list : ",listB)
if all(itertools.starmap(operator.le,
    zip(listB, listB[1:]))):
    print("Yes, List is sorted.")
else:
    print("No, List is not sorted.")

実行結果

Given list : ['Mon', 'Tue', 'Sun']
No, List is not sorted.
Given list : ['Mon', 'Sun', 'Tue']
Yes, List is sorted.

まとめ

リストが昇順に並んでいるかの判定には、シンプルなallzipの組み合わせが最も読みやすくおすすめです。一方、関数型スタイルで処理したい場合や、既存のコードベースでitertoolsを活用している場合は、starmapoperatorモジュールを使った方法も有効です。用途に応じて使い分けるとよいでしょう。

  1. Pythonでネストされたリスト(リストのリスト)内に要素が存在するか確認する方法

    Pythonではリストをネストすることができ、リストの要素がそれ自体リストになっている場合があります。本記事では、外側の大きなリストに含まれるサブリストの中に、指定した要素が存在するかどうかを判定するための3つの方法を、具体的なコード例とともにわかりやすく解説します。 any() 関数を使う方法 まず各サブリストの中に目的の要素が存在するかを調べ、その結果をもとに要素がリスト全体に存在するかを判定します。any() 関数とジェネレータ式を組み合わせると、いずれかのサブリストに要素が見つかった時点で True を返すため、簡潔に記述できるのが特徴です。 コード例 listA = [[-9, -1

  2. Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで

    Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5