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

Pythonで文字間隔が等しい連続文字列を抽出する方法

文字列のリストの中から、隣り合う文字同士の間隔(文字コードの差)が一定である「等間隔の連続文字列」を抽出したい場合があります。このような処理には、リスト内包表記と、組み込み関数のall()、そして文字をUnicodeコードポイントに変換するord()メソッドを組み合わせると、簡潔に実装できます。

サンプルコード

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

my_list = ["abc", "egfg", "mpsv", "abed", 'xzbd', 'agms']

print("元のリスト:")
print(my_list)

my_result = [sub for sub in my_list if all(ord(sub[index + 1]) - ord(sub[index]) == ord(sub[1]) - ord(sub[0]) for index in range(0, len(sub) - 1))]

print("結果のリスト:")
print(my_result)

実行結果

元のリスト:
['abc', 'egfg', 'mpsv', 'abed', 'xzbd', 'agms']
結果のリスト:
['abc', 'mpsv', 'agms']

コードの解説

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

  • リスト内包表記を使って、リスト内の各文字列を順番に走査します。

  • all() 関数ord() メソッドを組み合わせて、隣接する文字同士のコードポイントの差が、常に先頭2文字(インデックス0と1)の差と一致しているかどうかを判定します。

  • この条件を満たす文字列だけが新しいリストとして変数に代入されます。

  • 最後に、その結果得られたリストをコンソールに出力します。

例えば「abc」は a→b→c と1ずつ増加しており、「mpsv」も m→p→s→v と3ずつ増加しているため条件を満たします。一方「egfg」や「abed」は途中で差が変わるため除外されます。このように、文字コードの差分を比較するだけで、等間隔に並ぶ文字列を効率よく判別できます。

  1. Pythonのリストで連続する要素をペアにする方法

    Pythonでデータ分析を行っていると、リスト内の隣接する(連続する)要素同士をペアとして取り出したい場面に出会うことがあります。本記事では、この処理を実現するための代表的な2つの方法を、サンプルコードとともにわかりやすく解説します。インデックスとrangeを組み合わせる方法まずは、リストの連続するインデックスを組み合わせてペアを作る式を設計する方法です。range関数に「リストの長さ − 1」を渡すことで、ペアリングを繰り返す最大回数を決定します。これにより、最後の要素にアクセスする際に範囲外エラーが発生するのを防いでいます。サンプルコードlistA = [51,23,11,45] # 対象

  2. Pythonで文字列のリストを並べ替える方法:sort()とsorted()の使い分け

    Pythonでは、文字列のリストを並べ替える方法が2つ用意されています。リスト自体を直接変更するsort()メソッドと、元のリストを保持したまま新しい並べ替え済みリストを作成するsorted()関数です。それぞれの特徴と使い方を解説します。 sort()メソッドでリストをその場で並べ替える sort()は、リストそのものを並べ替える「in-place(破壊的)」な操作です。元のリストの順序が直接変更されるため、戻り値を受け取る必要はありません。 >>> a = [Hello, My, Followers] >>> a.sort() >>>