Vérifier si la Liste contient tous les éléments d'une autre liste
Ce qui est le plus simple/le moyen le plus rapide pour vérifier si une liste de tuples contenant tous les tuples qu'une autre liste. Par exemple:
t1 = [ (1,2), (3,4), (5,6), (7,8), (9,10), (11,12) ]
t2 = [ (3,4), (11,12) ]
serait un vrai cas depuis t1 contient tous les n-uplets dans t2. J'ai essayé quelque chose comme:
[i for e in t2 for i in t1 if e in i]
sorted(t1) == sorted(t2)
mais cela semblait retourne toujours true. Est-il un meilleur moyen?
la recherche et l'utilisation des ensembles de
OriginalL'auteur Lance Strait | 2015-02-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
set
sset
s.OriginalL'auteur Finn
Pour des raisons de simplicité, vous pouvez faire ceci:
Cependant, qui va à la recherche par le biais de
t1
pour chaque élément danst2
. Qui n'a probablement pas d'importance quandt1
est petite car dans ce cas, mais de permettre de grandes collections, je ferais ceci:ou ceci:
Ce sera généralement plus rapide, depuis
in
est beaucoup plus rapide pour les jeux que pour les grandes listes. Il n'y a pas de grandes performances dans la conversion det2
à un ensemble, indépendamment de la taille, donc je ne le ferais pas.Comme toujours, c'est mieux si vous obtenez vos données dans le "droit" de la collection pour commencer. Donc, si le but principal de
t1
est de regarder les choses en place, utilisez unset
, en premier lieu, plutôt que d'une liste.OriginalL'auteur Steve Jessop
Vous pouvez créer
set
s à partir de ces listes et de les utiliserissubset
méthode:OriginalL'auteur Jan Spurny