Liste à soustraire dans tableau
Bonjour,
Débutant en python depuis quelques semaines...
je butte sur un problème de listes...
J'ai deux listes :
Liste 1 : [a,b,c,d,e]
Liste 2 : [(a,1,m),(b,4,j),(h,4,o)]
Je souhaite pouvoir ne garder que les couples de valeurs de la liste 2 dont la première valeur du couple existe dans la liste 1 (je m'excuse pour le vocabulaire, je ne connais pas encore les termes...)
soit un résultat sous forme de liste :
resultat : [(a,1,m),(b,4,j)]
Si vous avez une idée ;)
Jérôme
Penser à utiliser une comparaison ensembliste
En python, il existe un type de données dans laquelle les opérations de
test d'appartenance sont très rapide. C'est la classe set.
Dans ton cas, cela donne quelque chose comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10
|
#!/usr/bin/env python
# -*- coding:UTF-8
def main():
ensemble = set([('a',5),('b',4)])
liste_origine = [['a',5,9],['u',5,-1],['a',5,10]]
liste_result = [ligne for ligne in liste_origine if tuple(ligne[:2]) in ensemble]
print liste_result
if __name__ == '__main__':
main() |
Cela étant si liste_origine fait dans les 100000 "ligne". Il y a peut être lieu
de lire le fichier ligne par ligne (par exemple en utilisant le module csv)
et de faire une bonne vieille boucle for.
En outre, si liste_result peut être très grosse aussi, on peut la remplacer par
une écriture dans un fichier (ici aussi le module csv)
En espérant t'avoir été utile.