[(1,2), (2,3), (4,5), (3,4), (6,7), (6,7), (3,8)]
Wie gebe ich den 2. Wert von jedem Tupel in dieser Liste zurück?
Gewünschte Ausgabe:
[2, 3, 5, 4, 7, 7, 8]
Mit einem Listenverständnis .
[x[1] for x in L]
Ein Listenverständnis ist absolut der Weg, dies zu tun. Eine andere Möglichkeit, sollte schneller zu sein, ist map
und itemgetter
.
import operator
new_list = map(operator.itemgetter(1), old_list)
Als Antwort auf den Kommentar, dass das OP auf Google keine Antwort gefunden hat, werde ich auf eine super naive Art und Weise verweisen.
new_list = []
for item in old_list:
new_list.append(item[1])
Dies verwendet:
append
-Methode in einer Liste.Wenn jemand versucht, eine Sprache zu lernen und diese Grundstücke nicht für sich selbst zusammenstellen kann, muss er es als Übung ansehen und es selbst tun, auch wenn es zwanzig Stunden dauert.
Man muss lernen, wie man überlegt, was man will und das mit den verfügbaren Werkzeugen vergleicht. Jedes Element in meiner zweiten Antwort sollte in einem grundlegenden Tutorial behandelt werden. Sie können nicht programmieren lernen, ohne eines zu lesen.
ODER Sie können pandas
verwenden:
>>> import pandas as pd
>>> L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
>>> df=pd.DataFrame(L)
>>> df[1]
0 2
1 3
2 5
3 4
4 7
5 7
6 8
Name: 1, dtype: int64
>>> df[1].tolist()
[2, 3, 5, 4, 7, 7, 8]
>>>
Oder numpy
:
>>> import numpy as np
>>> L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
>>> arr=np.array(L)
>>> arr.T[1]
array([2, 3, 5, 4, 7, 7, 8])
>>> arr.T[1].tolist()
[2, 3, 5, 4, 7, 7, 8]
>>>
Sie können das Entpacken von Sequenzen auch mit Zip
ausführen:
L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
_, res = Zip(*L)
print(res)
# (2, 3, 5, 4, 7, 7, 8)
Dies erzeugt auch einen Tupel _
aus den verworfenen ersten Elementen. Das Extrahieren nur der zweiten ist möglich, aber ausführlicher:
from itertools import islice
res = next(islice(Zip(*L), 1, None))