Comment vérifier si des mots d'une liste sont présents dans un élément d'une autre liste en Python ?

Published: 11 décembre 2024

Tags: Liste;

DMCA.com Protection Status

Introduction

En Python, lorsque vous travaillez avec des listes de chaînes de caractères, vous pouvez être confronté à des situations où vous devez déterminer si certains mots sont présents dans un ou plusieurs éléments d'une autre liste. Python offre des outils puissants comme les compréhensions de liste, combinés avec des fonctions intégrées telles que any() et all(), pour accomplir cela efficacement.

Cet article explore comment utiliser ces outils pour vérifier la présence de mots dans une liste de chaînes, ainsi que la différence entre l'utilisation de any() et all() pour affiner vos vérifications.

Utilisation des compréhensions de liste et de la fonction any()

La fonction any() permet de vérifier si au moins une condition dans un itérable est vraie. Lorsqu'elle est utilisée avec une compréhension de liste, elle devient un moyen efficace pour vérifier si un mot d'une liste est présent dans les éléments d'une autre liste. Voici un exemple :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Liste de mots à vérifier
words = ["word1", "word2", "word3"]

# Liste de phrases ou chaînes de caractères
elements = ["This is word1 in a sentence", "Another sentence", "No matching words here"]

# Vérifiez si un mot est présent dans un des éléments de la liste
matches = [element for element in elements if any(word in element for word in words)]

print(matches)

Sortie :

1
['This is word1 in a sentence']

Dans cet exemple, le code vérifie si un mot de la liste words se trouve dans chaque chaîne de la liste elements. Si un mot est trouvé dans la chaîne, cette dernière est ajoutée à la liste matches. Dans la sortie, seule la phrase contenant "word1" est retournée car c'est la seule correspondance.

Utilisation des compréhensions de liste et de la fonction all()

Si vous souhaitez vérifier si tous les mots d'une liste sont présents dans un élément d'une autre liste, vous pouvez modifier le code pour utiliser all() à la place de any(). Cela garantit que l'élément contient tous les mots de la liste.

Voici comment procéder :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Liste de mots à vérifier
words = ["word1", "word2", "word3"]

# Liste de phrases ou chaînes de caractères
elements = ["This is word1 and word2 in a sentence", 
            "This sentence contains word1, word2, and word3", 
            "This only has word1"]

# Vérifiez si tous les mots sont présents dans un des éléments de la liste
matches = [element for element in elements if all(word in element for word in words)]

print(matches)

Sortie :

1
['This sentence contains word1, word2, and word3']

Dans cette version, le code vérifie si tous les mots de la liste words sont présents dans chaque chaîne de la liste elements. Seules les chaînes contenant tous les mots seront incluses dans la liste matches.

Références

Liens Site
any() docs.python.org
all() docs.python.org