0
votes

Python: Utilisation correcte de tout () pour vérifier si une valeur d'un tableau existe dans un autre tableau?

Dans Python, j'essaie de créer une instruction si elle procède si une variable d'un tableau existe quelque part dans une autre liste ou une autre matrice. Voici mon code de base, qui est censé vérifier si l'une des valeurs dans IDS existe dans suivi_num : xxx

malgré mon meilleur Tentatives et de nombreuses versions de ce qui précède, je ne peux pas obtenir cela pour travailler. Quelqu'un pourrait-il s'il vous plaît élaborer où je vais mal ici?


0 commentaires

3 Réponses :


1
votes

Vous devez faire boucler chaque valeur dans IDS et vérifier si tout de ces valeurs existe dans suivi_num . Utilisez tout avec une compréhension génératrice: xxx

sortie: xxx

EDIT:

Si vous souhaitez imprimer des correspondances tout () ne fonctionne pas, vous devez utiliser A pour la boucle depuis tout () calcule pour la liste complète. Exemple: xxx

Notez que vous pouvez accélérer ces deux opérations en convertissant suivi_num à l'avance sur un ensemble () En effectuant suivi_num = set (suivi_num) . Ceci est plus rapide car Set a un O (1) en fonctionnement, par rapport aux listes qui calculent dans dans o (n) < / code>.


5 commentaires

Question rapide, existe-t-il un moyen évident de faire la déclaration IF dans la boucle une compréhension de la liste?


Vous pouvez faire quelque chose comme [impression (i) pour i in IDS si je en suivi_num] , mais qui défait le but de la compréhension de la liste - vous l'utilisez pour imprimer des valeurs de ne pas créer une liste .


Une bonne ressource pour les conditionnels dans les compréhensions de la liste serait ici: Stackoverflow.com/Questtions/4260280/...


Merci pour toute l'aide et la référence.


@ Coolio2654 heureux d'aider :)



2
votes

Vous pouvez également comparer deux ensembles: xxx


3 commentaires

Je me demanderais quelle est la vitesse de cette méthode, hmm, mais cela semble intéressant.


@ Coolio2654 Il échoue beaucoup mieux que la réponse de Primusa sous sa forme actuelle. Toutefois, si IDS a été converti en un défini d'abord dans la réponse par Primusa, il pourrait bien augmenter. Darius devrait garder à l'esprit la conversion de correspondant à la liste (...) est inutile


Aussi, tout (correspondances) est faux, car tout ([0]) est faux et 0 pourrait être un identifiant valide . Vous devez simplement vérifier si correspond à ou imprimer bool (correspondances)



0
votes
>>> ids = [123,321,111,333]
>>> follow_num = [111, 222]
>>> if set(ids).intersection(follow_num): 
...   print(ids)
... 
[123, 321, 111, 333]

1 commentaires

Cela pourrait être utile pour l'OP si vous ajoutez une explication à ce que vous codez le code.