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

Python – アルファベット順に連続する文字を含む文字列を抽出する方法

文字列の中に、アルファベット順に連続した文字(例:「h」の次に「i」)が含まれているかどうかを判定し、該当する文字列だけを抽出したいケースはよくあります。Pythonでは、シンプルな反復処理と、文字のUnicodeコードポイントを取得できるordメソッドを組み合わせることで、この処理を簡単に実装できます。

サンプルコード

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

my_list = ["python", 'is', 'cool', 'hi', 'Will', 'How']

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

my_result = []

for element in my_list:
   for index in range(len(element) - 1):
      if ord(element[index]) == ord(element[index + 1]) - 1:
         my_result.append(element)
         break
print("The result is :")
print(my_result)

出力結果

The list is :
['python', 'is', 'cool', 'hi', 'Will', 'How']
The result is :
['hi']

コードの解説

  • まず、複数の文字列を含むリストを定義し、コンソールに表示します。

  • 次に、抽出結果を格納するための空のリストを用意します。

  • 外側のループでリスト内の各文字列を1つずつ取り出し、内側のループでその文字列内の隣り合う2文字を順番に比較していきます。

  • ord関数は文字をUnicodeのコードポイント(整数値)に変換します。隣接する2文字のコードポイントの差がちょうど1であれば、その2文字はアルファベット順に連続していると判断できます。

  • 条件を満たす文字列が見つかったら、その文字列を結果リストに追加し、break文で内側のループを抜けます。これにより、同じ文字列が重複して追加されるのを防いでいます。

  • 最後に、条件を満たした文字列だけが格納されたリストをコンソールに出力します。

動作のポイント

この例では「hi」のみが結果として抽出されています。「h」のUnicodeコードポイントは104、「i」は105であり、差がちょうど1になるためです。一方、「python」や「cool」、「Will」、「How」には連続したアルファベットが含まれていないため、結果から除外されます。

  1. 2つの文字列の共通文字をアルファベット順に出力するPythonコード

    ユーザーから入力された2つの文字列が与えられたとき、両方の文字列に共通して含まれる文字をすべて抽出し、アルファベット順に並べて出力する方法を解説します。Python標準ライブラリの collections.Counter を使えば、わずか数行でこの処理を実装できます。実行例入力:string1: pythonstring2: program出力: op解説上の例では、「python」と「program」の両方に含まれる文字は「o」と「p」であり、それぞれ1回ずつ出現します。そのため、アルファベット順に並べた結果は「op」となります。アルゴリズムこの問題は、Counterオブジェクトの集合演算を

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

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