Ich habe eine Liste 'a'
a= [(1,2),(1,4),(3,5),(5,7)]
Ich muss alle Tupel für eine bestimmte Nummer finden. sag für 1 wird es sein
result = [(1,2),(1,4)]
Wie mache ich das?
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
Lesen Sie auch die Generatorfunktionen und die
yield
Anweisung nach.quelle
if x == 1
sollte seinif x == value
quelle
quelle
Filterfunktion verwenden:
quelle
[(1, 2), (1, 4)]
quelle
Oder
takewhile
(zusätzlich wird ein Beispiel für weitere Werte gezeigt):wenn unsortiert, wie:
quelle
Die
filter
Funktion kann auch eine interessante Lösung bieten: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:quelle
Wenn Sie das Tupel nach einer beliebigen Zahl durchsuchen möchten, die im Tupel vorhanden ist, können Sie verwenden
Sie können auch verwenden,
if i==j[0] or i==j[index]
wenn Sie eine Nummer in einem bestimmten Index suchen möchtenquelle