Réponses:
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
[ (x,y) for x, y in a if x == 1 ]
Lisez également les fonctions du générateur et la yield
déclaration.
def filter_value( someList, value ):
for x, y in someList:
if x == value :
yield x,y
result= list( filter_value( a, 1 ) )
if x == 1
devrait êtreif x == value
[tup for tup in a if tup[0] == 1]
for item in a:
if 1 in item:
print item
La filter
fonction peut également apporter une solution intéressante:
result = list(filter(lambda x: x.count(1) > 0, a))
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:
result = list(filter(lambda x: x[0] == 1, a))
Ou takewhile
, (en plus de cela, un exemple de plus de valeurs est affiché):
>>> a= [(1,2),(1,4),(3,5),(5,7),(0,2)]
>>> import itertools
>>> list(itertools.takewhile(lambda x: x[0]==1,a))
[(1, 2), (1, 4)]
>>>
si non trié, comme:
>>> a= [(1,2),(3,5),(1,4),(5,7)]
>>> import itertools
>>> list(itertools.takewhile(lambda x: x[0]==1,sorted(a,key=lambda x: x[0]==1)))
[(1, 2), (1, 4)]
>>>
si vous souhaitez rechercher un tuple pour tout nombre présent dans le tuple, vous pouvez utiliser
a= [(1,2),(1,4),(3,5),(5,7)]
i=1
result=[]
for j in a:
if i in j:
result.append(j)
print(result)
Vous pouvez également utiliser if i==j[0] or i==j[index]
si vous souhaitez rechercher un numéro dans un index particulier