Python で部分文字列の N 番目の出現を効率的に見つけるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-20 07:27:02
オリジナル
988 人が閲覧しました

How to Efficiently Find the Nth Occurrence of a Substring in Python?

Python で部分文字列の N 番目の出現箇所を見つける

大きな文字列内の特定の部分文字列の出現位置を特定することは、頻繁に行われるプログラミング タスクです。初心者の Python 開発者にとって、これを効率的かつ慣用的に達成することは課題となる可能性があります。この記事は、最も Python 的なアプローチに焦点を当て、部分文字列の n 番目の出現を見つけるために利用できるさまざまな方法を説明することを目的としています。

反復アプローチ

単純な反復ソリューションには、次のものが含まれます。部分文字列を複数回検索します。デフォルトでは、Python の find() メソッドは最初の出現箇所のみを検索します。 n 番目の出現を取得するには、前の出現の直後の位置から開始して連続的に検索できます。

<code class="python">def find_nth(haystack: str, needle: str, n: int) -> int:
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+len(needle))
        n -= 1
    return start</code>
ログイン後にコピー

この方法は簡単でメモリ効率が高くなります。

重複する出現

n 番目の重複箇所が必要な場合は、find() メソッドの増分を調整する必要があります。

<code class="python">def find_nth_overlapping(haystack, needle, n):
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+1)
        n -= 1
    return start</code>
ログイン後にコピー

Python の考慮事項

正規表現や文字列分割を使用したソリューションと比較して、反復アプローチは、単純さ、平坦性、読みやすさという Python の設計原則に準拠しています:

  • シンプルさ: 不必要な複雑さを回避し、明確な論理フロー。
  • 平坦性: ネストされたループや条件文がないため、コードの明瞭さが向上します。
  • 可読性: 単純な構文で直感的変数名は理解を容易にします。

以上がPython で部分文字列の N 番目の出現を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!