Comment trouver efficacement la nième occurrence d'une sous-chaîne en Python ?

Barbara Streisand
Libérer: 2024-10-20 07:27:02
original
989 Les gens l'ont consulté

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

Localisation de la Nième occurrence d'une sous-chaîne en Python

Identifier la position d'une occurrence de sous-chaîne spécifique dans une chaîne plus grande est une tâche de programmation fréquente . Pour les développeurs Python débutants, y parvenir de manière efficace et idiomatique peut poser un défi. Cet article vise à élucider les différentes méthodes disponibles pour trouver la nième occurrence d'une sous-chaîne, en se concentrant sur l'approche la plus pythonique.

Approche itérative

Une solution itérative simple implique rechercher la sous-chaîne plusieurs fois. Par défaut, la méthode find() de Python localise uniquement la première occurrence. Pour obtenir la nième occurrence, nous pouvons rechercher successivement à partir de la position qui suit immédiatement l'occurrence précédente :

<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>
Copier après la connexion

Cette méthode est simple et économe en mémoire.

Occurrences superposées

Occurrences superposées

<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>
Copier après la connexion

Si la nième occurrence superposée est souhaitée, l'incrément dans la méthode find() doit être ajusté :

Considérations pythoniques

  • Par rapport aux solutions utilisant des expressions régulières ou le fractionnement de chaînes, l'approche itérative adhère aux principes de conception de Python de simplicité, de planéité et de lisibilité :
  • Simplicité : Elle évite la complexité inutile et maintient un flux logique clair.
  • Platitude : L'absence de boucles imbriquées ou d'instructions conditionnelles améliore la clarté du code.
Lisibilité : La syntaxe simple et intuitive les noms de variables facilitent la compréhension.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!