Maison  >  Article  >  développement back-end  >  Comment trouver efficacement la nième occurrence d’une sous-chaîne en Python ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-10-20 07:27:02995parcourir

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>

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>

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!

Déclaration:
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