Pythonプログラム – 文字列内の部分文字列の出現位置をすべて取得する方法
はじめに
Pythonでは、ある文字列の中に特定の部分文字列がどの位置(インデックス)に出現するかをすべて取得したい場面があります。そんなときは、リスト内包表記とstartswith()メソッドを組み合わせることで、簡潔かつ効率的に実装できます。
サンプルコード
以下に具体的な実装例を示します。
my_string = "Python learn code test fun amazing object oriented"
sub_string = "object"
print("The string is : ")
print(my_string)
print("The sub-string is : ")
print(sub_string)
my_result = [index for index in range(len(my_string)) if my_string.startswith(sub_string, index)]
print("The resultant string is : ")
print(my_result)出力結果
The string is : Python learn code test fun amazing object oriented The sub-string is : object The resultant string is : [35]
コードの解説
- まず、検索対象となる元の文字列を定義し、コンソールに表示します。
- 続いて、探したい部分文字列を定義して表示します。
- リスト内包表記を使い、
range(len(my_string))によって文字列の先頭から末尾までの各インデックスを順番に走査します。 - 各インデックス位置に対して、
startswith(sub_string, index)を呼び出し、「その位置から部分文字列が始まるかどうか」を判定します。startswith()の第2引数に開始位置を指定できるのがポイントです。 - 条件を満たしたインデックスのみがリストに格納され、変数
my_resultに代入されます。 - 最後に、結果のリストをコンソールに出力します。この例では「object」が35番目の位置に出現しているため、
[35]という結果が得られます。
補足:別のアプローチ
同様の処理は、str.find()メソッドをループで繰り返し呼び出すことでも実現できます。ただし、リスト内包表記とstartswith()を組み合わせる方法の方が、コードが短く読みやすいため、多くの場面で推奨されます。また、より複雑なパターンマッチングが必要な場合は、標準ライブラリのreモジュール(正規表現)を活用するのも有効です。
-
指定された文字列のすべての順列を出力するPythonプログラム
本記事では、以下の問題に対する解決策について詳しく学んでいきます。 問題文 1つの文字列が与えられたとき、その文字列から作成できるすべての順列(並べ替えの組み合わせ)を表示する必要があります。 それでは、以下の実装例で具体的な解決策を見ていきましょう。 実装例 # リストを文字列に変換 def toString(List): return .join(List) # 順列の生成 def permute(a, l, r): if l == r: print(toString(a)) else: for i in range(l, r +
-
Pythonで2つのリストの共通要素をすべて出力する方法
2つのリストが与えられたとき、両方のリストに共通して含まれるすべての要素を出力するPythonプログラムを紹介します。この問題は、セット(set)型の集合演算を使うことで、シンプルかつ効率的に解決できます。 実行例 入力 : L1 = [5, 6, 7, 8, 9] L2 = [5, 13, 34, 22, 90] 出力 : {5} 説明 上記の例では、2つのリストのどちらにも存在する要素は「5」だけなので、出力は {5} となります。 アルゴリズム 処理の手順は以下のとおりです。 ステップ1 : ユーザーから入力を受け取り、2つのリストを作成する。 ステップ2 : 各リ