Je passe à Python et je suis toujours relativement nouveau à l'approche pythonique. Je souhaite écrire une fonction qui prend une chaîne et une liste et retourne true si tous les éléments de la liste se produisent dans la chaîne.
Cela semblait assez simple. Cependant, je suis confronté à des difficultés avec ça. Le code va quelque chose comme ceci: p>
aussi, j'espérais aussi que quelqu'un pourrait suggérer une personne possible APPROCHE REGEX ICI. Je m'essaye aussi mes mains sur eux. P> P>
5 Réponses :
>>> all(x in 'tomato' for x in ['t','o','m','a']) True >>> all(x in 'potato' for x in ['t','o','m','a']) False
Et si vous voulez parcourir les caractères de la chaîne et voir si tous sont de la liste ou non?
Ensuite, utilisez une compréhension de la liste.
Pouvez-vous simplement donner une démonstration sur la façon dont je pourrais l'utiliser? Entre, je vais sûrement vérifier !!
def myfun(str,list):
for a in list:
if not a in str:
return False
return True
return true must be outside the for loop, not just after the if statement, otherwise it will return true just after the first letter has been checked. this solves your code's problem :)
Merci .. je l'ai eu maintenant. Entre entre, ces empreintes sont un peu déroutantes de dire le moins de quelqu'un de nouveau dans la langue !!
Pour chaque lettre que vous suivez dans la liste. Donc, si la liste est de longueur Aussi, ce n'est pas une bonne pratique de nommer des variables comme n code> et que vous avez m code> lettres, la complexité est o (n * m) code>. Et vous pouvez atteindre O (m) code> si vous préprocrocessez le mot. STR code > et list code> comme si vous auriez besoin de plus tard pour créer list code> ou utiliser str code>, ils seront ombrés par vos variables. P> < p> Certaines informations pertinentes: p>
Tout code> fonction p> li>
SET CODE> Complexité P> li>
ul> p>
Si vous n'êtes pas inquiet pour les caractères répétés, alors:
from collections import Counter
def myfunc(string, seq):
c1 = Counter(string)
c2 = Counter(seq)
return not (c2 - c1)
la chaîne est un nom de module Python, de sorte que la variable de nommage string i> n'est pas une bonne idée
Pour le plaisir, je pensais le faire avec des itérateurs et une carte: Puis j'ai réalisé que cela fait essentiellement la même chose que la réponse acceptée, mais probablement avec plus d'appels de méthodes . P> def myfun(str, list):
return all(letter in str for letter in list)
Ensuite, vous seriez probablement bon en sélectionnant un meilleur problème qui nécessite une regex. Ce n'est pas le cas. En fait, vous le faites bien.
Si vous voulez aller mieux et essayer des tâches liées à la regex, essayez Regex101.com/Quiz
myfun = lambda a, b: tout (i dans A pour i en b) code>