wake-up-neo.com

Referenzieren eines Elements in einer Liste von Tupeln

Sorry im Voraus, aber ich bin neu in Python. Ich habe eine Liste von tuples, und ich habe mich gefragt, wie ich das erste Element jeder Tuple innerhalb der Liste referenzieren kann. Ich würde denken, es ist so etwas 

for i in number_of_tuples :
  first_element = myList[i[0]]

sie wissen, [list_element[Tuple_element]]? Dies scheint jedoch nicht der richtige Ansatz zu sein. Jede Hilfe wäre sehr dankbar.

Vielen Dank,

Turner

20
Turner Hughes

Alle anderen Antworten sind richtig, erklären aber nicht, warum das, was Sie versucht haben, falsch war. Wenn Sie myList[i[0]] tun, sagen Sie Python, dass i ein Tuple ist und Sie den Wert oder das erste Element von Tuple i als Index für myList verwenden möchten.

Wenn Sie auf einen verschachtelten Datentyp (z. B. Arrays, Listen oder Tupel) zugreifen müssen, hängen Sie in den meisten Programmiersprachen die Klammern an, um zum innersten Element zu gelangen. Die erste Klammer gibt die Position des Tupels in Ihrer Liste an. Die zweite Klammer gibt die Position des Artikels im Tupel an.

Dies ist ein schnelles rudimentäres Beispiel, das ich mir ausgedacht habe:

info = [ ( 1, 2), (3, 4), (5, 6) ]

info[0][0] == 1
info[0][1] == 2
info[1][0] == 3
info[1][1] == 4
info[2][0] == 5
info[2][1] == 6
36

Sie können eine Liste des ersten Elements in jedem Tupel erhalten, indem Sie ein List-Verständnis verwenden:

>>> my_tuples = [(1, 2, 3), ('a', 'b', 'c', 'd', 'e'), (True, False), 'qwerty']
>>> first_elts = [x[0] for x in my_tuples]
>>> first_elts
[1, 'a', True, 'q']
30
Matt Ball

Der Code

my_list = [(1, 2), (3, 4), (5, 6)]
for t in my_list:
    print t

druckt

(1, 2)
(3, 4)
(5, 6)

Die Schleife durchläuft my_list und ordnet die Elemente von my_list nacheinander t zu. Die Elemente von my_list sind zufällig Tupel, daher ist t immer ein Tuple. Um auf das erste Element des Tupels t zuzugreifen, verwenden Sie t[0]:

for t in my_list:
    print t[0]

Um auf das erste Element des Tupels am angegebenen Index i in der Liste zuzugreifen, können Sie verwenden

print my_list[i][0]
4
Sven Marnach

Eher, als:

first_element = myList[i[0]]

Sie wollen wahrscheinlich:

first_element = myList[i][0]
3
Edward Loper

Sie können auch itemgetter operator verwenden:

from operator import itemgetter
my_tuples = [('c','r'), (2, 3), ('e'), (True, False),('text','sample')]
map(itemgetter(0), my_tuples)
3

Sie haben also "eine Liste von Tupeln", lassen Sie mich davon ausgehen, dass Sie eine zweidimensionale Matrix bearbeiten, und in diesem Fall ist eine praktische Schnittstelle für das, was Sie benötigen, die von numpy.

Angenommen, Sie haben ein Array arr = numpy.array([[1, 2], [3, 4], [5, 6]]). Sie können arr[:, 0] verwenden, um ein neues Array aller ersten Elemente in jedem "Tuple" zu erhalten.

1
satoru

Hier ein kurzes Beispiel:

termList = []
termList.append(('term1', [1,2,3,4]))
termList.append(('term2', [5,6,7,8]))
termList.append(('term3', [9,10,11,12]))

result = [x[1] for x in termList if x[0] == 'term3']

print(result)
1
MateusR