Antworten:
Wenn Sie nur möchten, dass die erste Zahl übereinstimmt, können Sie dies folgendermaßen tun:
[item for item in a if item[0] == 1]
Wenn Sie nur nach Tupeln mit 1 suchen:
[item for item in a if 1 in item]
Es gibt tatsächlich eine clevere Möglichkeit, die für jede Liste von Tupeln nützlich ist, bei der die Größe jedes Tupels 2 beträgt: Sie können Ihre Liste in ein einziges Wörterbuch konvertieren.
Beispielsweise,
test = [("hi", 1), ("there", 2)]
test = dict(test)
print test["hi"] # prints 1
dict(X)
wandelt X in ein Wörterbuch , in dem das letzte Tupel von jedem gemeinsamen ersten Elemente, der Wert ist, der verwendet wird. Im Beispiel des OP würde dies (1,4) im Gegensatz zu (1,2) und (1,4) zurückgeben.
Lesen Sie mehr über Listenverständnisse
[ (x,y) for x, y in a if x == 1 ]
Lesen Sie auch die Generatorfunktionen und die yield
Anweisung nach.
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
sollte seinif x == value
[tup for tup in a if tup[0] == 1]
for item in a:
if 1 in item:
print item
Oder takewhile
(zusätzlich wird ein Beispiel für weitere Werte gezeigt):
>>> 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)]
>>>
wenn unsortiert, wie:
>>> 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)]
>>>
Die filter
Funktion kann auch eine interessante Lösung bieten:
result = list(filter(lambda x: x.count(1) > 0, a))
Hiermit werden die Tupel in der Liste nach Vorkommen von durchsucht 1
. Wenn die Suche auf das erste Element beschränkt ist, kann die Lösung geändert werden in:
result = list(filter(lambda x: x[0] == 1, a))
Wenn Sie das Tupel nach einer beliebigen Zahl durchsuchen möchten, die im Tupel vorhanden ist, können Sie verwenden
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)
Sie können auch verwenden, if i==j[0] or i==j[index]
wenn Sie eine Nummer in einem bestimmten Index suchen möchten