Maison  >  Article  >  développement back-end  >  Programme Python pour extraire les chaînes correspondant à la grille

Programme Python pour extraire les chaînes correspondant à la grille

WBOY
WBOYavant
2023-09-09 22:21:09842parcourir

Programme Python pour extraire les chaînes correspondant à la grille

La reconnaissance de formes est un concept de programmation important. Cela nous permet de récupérer des données spécifiques qui répondent à des conditions spécifiques ou correspondent à une séquence spécifique. Ce principe est utile dans divers domaines tels que le Langage et le Traitement d'image. La correspondance de chaînes nous aide à extraire des informations significatives à partir de grandes quantités de données.

Dans cet article, nous discuterons du concept similaire d'extraction de correspondance de grillechaînes à partir d'une liste de chaînes donnée. L'objectif de la correspondance de grille est d'extraire des chaînes "similaires" de longueur égale. Discutons de ce problème en détail.

Comprendre le problème

Le concept principal est d'extraire des chaînes similaires qui suivent un modèle spécifique. La chaîne de grille contient des caractères manquants et les chaînes qui correspondent au modèle masqué de la grille doivent être extraites. Comprenons cela à travers un exemple -

Scénarios d'entrée et de sortie

Input:
lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"

La grille contient les lettres "e" et "h" ainsi que quelques caractères manquants qui forment un motif. Nous devons extraire la chaîne correspondant au motif de grille de la liste.

Output: ['Suresh', 'Ramesh']

Apparemment, les mots « Suresh » et « Ramesh » correspondent au motif de la grille. Maintenant que nous comprenons l'énoncé du problème, discutons de quelques solutions.

Utilisation de l'itération avec Zip()

Après avoir transmis la liste de chaînes et le motif de grille, nous créerons une liste vide pour stocker les chaînes extraites. Nous utiliserons une boucle "for" pour parcourir chaque chaîne et créer une condition à l'intérieur de la boucle pour vérifier si la longueur de la "String" (mot) actuelle est égale à la longueur de cette chaîne. filet.

Cela nous permet de sélectionner des chaînes pertinentes pour la correspondance de grille. La condition vérifie également si le caractère dans la grille est "souligné" ou correspond au caractère correspondant dans le mot.

En utilisant ces deux conditions, nous extrairons les mots qui correspondent au motif de la grille. Si la chaîne et ses caractères satisfont à la condition, la fonction zip() sera utilisée pour itérer et associer les caractères de "mesh" avec les caractères de "". Cette fonction permet aux deux modèles d'effectuer des comparaisons par paires.

Exemple

Voici un exemple d'extraction d'une chaîne de correspondance de grille –

lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"
lis2 = []
print(f"The original list is: {lis1}")

for words in lis1:
   if (len(words) == len(mesh)) and all((letter1 == "_") or (letter1 == letter2)
      for letter1, letter2 in zip(mesh, words)):
         lis2.append(words)

print(f"The new list is: {lis2}")

Sortie

The original list is: ['Suresh', 'Ramesh', 'Ravi', 'Raghav']
The new list is: ['Suresh', 'Ramesh']

Utiliser la compréhension de liste

Dans cette approche, nous utiliserons des techniques de compréhension de liste pour générer du code détaillé et compact. Le concept d'itération multiligne peut être résumé en quelques lignes de code.

Cette représentation compacte améliore la lisibilité du programme. Nous utiliserons la même logique pour établir des conditions et des valeurs distinctes qui répondent aux critères. Les boucles « for » et « if » seront appliquées aux listes. Comparez et faites correspondre chaque caractère à l'aide de la fonction

zip() .

Exemple

Voici un exemple -

lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"
print(f"The original list is:{lis1}")

lis2 = [words for words in lis1 if (len(words) == len(mesh)) and all((letter1 == "_") or (letter1 == letter2)
           for letter1, letter2 in zip(mesh, words))]

print(f"The new list is: {lis2}")

Sortie

The original list is:['Suresh', 'Ramesh', 'Ravi', 'Raghav']
The new list is: ['Suresh', 'Ramesh']

Utilisez la fonction Filter() + Lambda()

La fonction Filtre peut être utilisée pour filtrer les valeurs en fonction de critères spécifiques. Après avoir fourni le modèle de grille et la liste des chaînes, nous allons créer une nouvelle liste à l'aide des fonctions

filter() et lambda . La fonction de filtrage filtrera les chaînes sans correspondance et définira une fonction lambda qui vérifie la longueur des deux modèles. La fonction

zip() sera utilisée pour comparer et faire correspondre les caractères. Les critères de filtre seront fournis par la fonction lambda.

Exemple

Voici un exemple -

lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"
print(f"The original list is:{lis1}")

lis2 = list(filter(lambda words: len(words) == len(mesh) and all((letter1 == "_") or (letter1 == letter2)
   for letter1, letter2 in zip(mesh, words)), lis1))
print(f"The new list is: {lis2}")

Sortie

The original list is:['Suresh', 'Ramesh', 'Ravi', 'Raghav']
The new list is: ['Suresh', 'Ramesh']

Des informations précieuses

Toutes les solutions évoquées ci-dessus suivent un principe fondamental : afin de comparer des modèles de chaîne et de grille, leurs longueurs doivent être égales, c'est-à-dire ; la chaîne et la grille doivent avoir le même nombre de caractères. De plus, si la position du soulignement change, la reconnaissance des formes changera également.

Conclusion

Dans cet article, nous avons discuté de quelques solutions riches et efficaces pour extraire des

gridchaînes correspondantes. Au départ, nous nous sommes concentrés sur la compréhension du concept de correspondance de grille, puis nous avons introduit des solutions. Nous avons appliqué de nombreux concepts de programmation, notamment "Itération", "Compréhension de liste", "filter()" et "fonction lambda" b>" pour atteindre nos objectifs.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer