2010-02-03 6 views

Répondre

149

Si vous voulez juste le premier numéro de match que vous pouvez le faire comme ceci:

[item for item in a if item[0] == 1] 

Si vous êtes à la recherche d'tuples avec 1 en eux:

[item for item in a if 1 in item] 
+12

Ah, la compréhension de la liste. – HelloGoodbye

15

Lire sur List Comprehensions

[ (x,y) for x, y in a if x == 1 ] 

lire également en place generator functions et 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)) 
+0

'if x == 1' devrait être' if x == value' – sambha

4
for item in a: 
    if 1 in item: 
     print item 
7
[tup for tup in a if tup[0] == 1] 
73

Il est en fait une façon intelligente de faire ce qui est utile pour une 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 
+6

Comment l'appliquer au problème de Bruce? – HelloGoodbye

+1

Bonne réponse (mais peut-être pas pour cette question). J'ai bien travaillé pour déterminer si une valeur était dans une liste de tuples de choix (par exemple, si "salut" dans le test) – MagicLAMP

+4

Il ne répond pas vraiment à la question, comme le suggère MagicLAMP. Plus précisément, 'dict (X)' convertit X en un dictionnaire où la dernière ligne d'un premier élément commun est la valeur utilisée. Dans l'exemple de l'OP, cela reviendrait (1,4) par opposition aux deux (1,2) et (1,4). – BBischof

0

La fonction filter peut également fournir 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)) 
0

Utilisation de la fonction filtre:

>>> def get_values(iterables, key_to_find):
return list(filter(lambda x:key_to_find in x, iterables)) >>> a = [(1,2),(1,4),(3,5),(5,7)] >>> get_values(a, 1) >>> [(1, 2), (1, 4)]