J'ai une liste 'a'
a= [(1,2),(1,4),(3,5),(5,7)]
J'ai besoin de trouver tous les tuples pour un nombre particulier. dis pour 1 ce sera
result = [(1,2),(1,4)]
Comment je fais ça?
Si vous voulez juste que le premier numéro corresponde, vous pouvez le faire comme ceci:
[item for item in a if item[0] == 1]
Si vous recherchez simplement des tuples contenant 1:
[item for item in a if 1 in item]
Il existe en fait une manière intelligente de faire cela qui est utile pour toute liste de tuples où la taille de chaque tuple est 2: vous pouvez convertir votre liste en un seul dictionnaire.
Par exemple,
test = [("hi", 1), ("there", 2)]
test = dict(test)
print test["hi"] # prints 1
dict(X)
convertit X en un dictionnaire où le dernier tuple de tout premier élément commun est la valeur utilisée. Dans l'exemple de l'OP, cela renverrait (1,4) par opposition aux deux (1,2) et (1,4).En savoir plus sur les compréhensions de listes
Lisez également les fonctions du générateur et la
yield
déclaration.la source
if x == 1
devrait êtreif x == value
la source
la source
[(1, 2), (1, 4)]
la source
La
filter
fonction peut également apporter une solution intéressante:qui recherche les tuples dans la liste pour toute occurrence de
1
. Si la recherche est limitée au premier élément, la solution peut être modifiée en:la source
Utilisation de la fonction de filtre:
la source
Ou
takewhile
, (en plus de cela, un exemple de plus de valeurs est affiché):si non trié, comme:
la source
si vous souhaitez rechercher un tuple pour tout nombre présent dans le tuple, vous pouvez utiliser
Vous pouvez également utiliser
if i==j[0] or i==j[index]
si vous souhaitez rechercher un numéro dans un index particulierla source