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

Pythonでリストの各行の長さが昇順になっているかどうかを判定するプログラム


ネストされたリスト(リストの中にリストが入った構造)において、各行(サブリスト)の長さが昇順に並んでいるかどうかを確認したい場合があります。このような判定は、シンプルな反復処理とブール値を組み合わせることで簡単に実装できます。

以下に具体的な実装例を示します。

コード例

my_list = [[55], [12, 17], [25, 32, 24], [58, 36, 57, 19, 14]]

print("The list is :")
print(my_list)

my_result = True

for index in range(len(my_list) - 1):
    if len(my_list[index + 1]) <= len(my_list[index]):
        my_result = False
        break

print("The result is :")

if my_result == True:
    print("The rows are increasing in length")
else:
    print("The rows aren't increasing in length")

出力結果

The list is :
[[55], [12, 17], [25, 32, 24], [58, 36, 57, 19, 14]]
The result is :
The rows are increasing in length

処理の流れと解説

  • まず、整数を要素とするリストのリストを定義し、その内容をコンソールに表示します。

  • 判定結果を格納するための変数に、初期値としてブール値「True」を代入します。

  • forループでリストを走査し、各リストの長さと、その直後にある隣接リストの長さを比較します。

  • もし現在のリストの長さが次のリストの長さ以上であった場合(=昇順が崩れている場合)、ブール値を「False」に更新します。

  • 昇順が崩れていることが判明した時点で、break文によってループを抜け出し、不要な比較処理を省略します。これによりパフォーマンスが向上します。

  • 最後に、ブール値の状態に応じて、「行の長さが昇順になっている」または「昇順になっていない」というメッセージをコンソールに出力します。

よりPythonicな書き方:all()関数を活用する

上記のループ処理は、組み込み関数 all() とジェネレータ式を組み合わせることで、1行でより簡潔に記述することも可能です。

my_result = all(len(my_list[i]) < len(my_list[i + 1]) for i in range(len(my_list) - 1))

この方法では、すべての隣接ペアについて「前の行の長さ < 次の行の長さ」が成り立つ場合のみTrueが返されます。可読性が高く、実務でも広く使われるイディオムなので、覚えておくと便利です。

  1. 【Python】リスト内の「連結語」の個数を数える方法をトライ木とDFSで解説

    文字列のリストが与えられたとき、そのリスト内の他の単語を連結することで作られる単語がいくつあるかを求める問題を考えてみましょう。連結の際には単語を何度でも再利用でき、連結回数にも制限はありません。 例えば、入力が words = [hello, world, helloworld, famous, worldfamous, programming] の場合を考えます。このとき出力は 2 になります。なぜなら、「helloworld」は「hello」と「world」の連結であり、「worldfamous」は「world」と「famous」の連結で作られているからです。 解決のためのアプローチ

  2. 要素の長さに基づいてリストをソートするPythonプログラム

    この記事では、ユーザーが入力したリストを、各要素の長さ(文字数)に基づいてソートする方法を解説します。Pythonには標準で用意されている組み込み関数 sorted() を使うことで、シンプルなコードで実現できます。 例 入力::[mona,pp,aaa] それぞれの長さは [4,2,3] したがって、ソート後の並び順は [2,3,4] 出力::[pp,aaa,mona] アルゴリズム ステップ1: リストの要素を入力する。 ステップ2: sorted(A, key=len) 関数を適用する。 サンプルコード # リストをソートする def sortedlist(A): ne