webentwicklung-frage-antwort-db.com.de

Zugriff auf einen Wert in einem Tupel, das sich in einer Liste befindet

[(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]
79
super9

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:

  1. Deklarieren einer Variablen, um auf eine leere Liste zu verweisen.
  2. Eine for-Schleife.
  3. Aufrufen der 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.

6
aaronasterling

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]
>>> 
1
U10-Forward

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))
1
jpp