web-dev-qa-db-fra.com

Référence un élément dans une liste de tuples

Désolé d'avance, mais je suis nouveau sur Python. J'ai une liste de tuples, et je me demandais comment je pouvais faire référence, par exemple, au premier élément de chaque Tuple de la liste. Je penserais que c'est quelque chose comme 

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

vous savez, [list_element[Tuple_element]]? Cependant, cela ne semble pas être la bonne approche. Toute aide serait grandement appréciée.

Merci,

Tourneur

20
Turner Hughes

Toutes les autres réponses sont correctes, mais n’expliquez pas pourquoi ce que vous avez essayé est erroné. Lorsque vous faites myList[i[0]], vous indiquez à Python que i est un tuple et que vous souhaitez que la valeur ou le premier élément de Tuple i soit l'index de maListe.

Dans la majorité des langages de programmation, lorsque vous devez accéder à un type de données imbriqué (tel que des tableaux, des listes ou des n-uplets), vous ajoutez des crochets pour accéder à l'élément le plus à l'intérieur. Le premier support vous donne l'emplacement du tuple dans votre liste. Le deuxième support vous donne l'emplacement de l'élément dans le tuple.

Voici un exemple rapide et rudimentaire que je propose:

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
Prodigal Maestro

Vous pouvez obtenir une liste du premier élément de chaque tuple en utilisant une compréhension de liste :

>>> 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

Le code

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

empreintes

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

La boucle itère sur my_list et affecte les éléments de my_list à t l'un après l'autre. Les éléments de my_list étant des tuples, t sera toujours un tuple. Pour accéder au premier élément de la rangée t, utilisez t[0]:

for t in my_list:
    print t[0]

Pour accéder au premier élément du tuple à l’index donné i dans la liste, vous pouvez utiliser

print my_list[i][0]
4
Sven Marnach

Plutôt que:

first_element = myList[i[0]]

Vous voulez probablement:

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

Vous pouvez également utiliser itemgetter operator:

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

Donc, vous avez "une liste de n-uplets", supposons que vous manipulez une matrice à 2 dimensions et, dans ce cas, une interface pratique pour accomplir ce dont vous avez besoin est celle que numpy fournit.

Disons que vous avez un tableau arr = numpy.array([[1, 2], [3, 4], [5, 6]]), vous pouvez utiliser arr[:, 0] pour obtenir un nouveau tableau de tous les premiers éléments de chaque "Tuple".

1
satoru

Voici un exemple rapide:

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