830 votes

Vérifie si un élément de liste Python contient une chaîne à l’intérieur d’une autre chaîne

J’ai une liste :

et à rechercher les éléments qui contiennent la chaîne `` . Comment puis-je faire ?

vérifierait si existe dans la liste mais il existe juste et et pas . Alors, comment puis-je obtenir tous les éléments qui contiennent des `` ?

1315voto

Sven Marnach Points 133943

Si vous voulez seulement vérifier la présence d'un "abc" dans n'importe quelle chaîne de la liste, vous pouvez essayer

 some_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
if any("abc" in s for s in some_list):
    # whatever
 

Si vous voulez vraiment obtenir tous les éléments contenant "abc", utilisez

 matching = [s for s in some_list if "abc" in s]
 

102voto

MAK Points 12571

Utilisez filter pour obtenir les éléments qui ont abc .

 >>> lst = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
>>> print filter(lambda x: 'abc' in x, lst)
['abc-123', 'abc-456']
 

Vous pouvez également utiliser une compréhension de liste.

 >>> [x for x in lst if 'abc' in x]
 

Soit dit en passant, n'utilisez pas le mot list comme nom de variable car il est déjà utilisé pour le type list .

19voto

Robert Muil Points 408

C'est tout à fait une vieille question, mais je vous offre cette réponse parce que les réponses précédentes ne pas faire face à des éléments de la liste qui ne sont pas des chaînes de caractères (ou un type d'objet itérable). Ces éléments font toute la compréhension de liste à l'échec avec une exception.

Pour normalement faire face à de tels éléments dans la liste en ignorant la non-itératif éléments, utilisez la commande suivante:

[el for el in lst if isinstance(el, collections.Iterable) and (st in el)]

alors, avec une telle liste:

lst = [None, 'abc-123', 'def-456', 'ghi-789', 'abc-456', 123]
st = 'abc'

vous aurez toujours des éléments correspondants (['abc-123', 'abc-456'])

Le test itératif peut-être pas le meilleur. Obtenu à partir d'ici: En python, comment puis-je déterminer si une variable est Itératif?

15voto

cldy Points 2184
x = 'aaa'
L = ['aaa-12', 'bbbaaa', 'cccaa']
res = [y for y in L if x in y]

12voto

Igor Khomenko Points 7233
for item in my_list:
    if item.find("abc") != -1:
        print item

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X