Trouver l'index d'une liste dans une liste Python

Résolu/Fermé
Fab121205 Messages postés 81 Date d'inscription dimanche 26 juillet 2015 Statut Membre Dernière intervention 20 mars 2022 - 20 mars 2022 à 13:41
Fab121205 Messages postés 81 Date d'inscription dimanche 26 juillet 2015 Statut Membre Dernière intervention 20 mars 2022 - 20 mars 2022 à 15:06
Bonjour,

Je travaille sur une application Python et j'ai un petit soucis que je ne sais pas comment résoudre. Cela concerne les listes en Python.
J'ai une liste qui contient des listes du type :
[[34, "text", 345], [37, "text", 567], ....]
et j'aimerai pouvoir trouver l'index de la liste qui a comme premier élément 34 par exemple. J'ai cherché sur internet et la solution pour une simple liste serait la méthode list.index(). Cependant je n'ai pas trouvé comment faire pour que cette méthode cherche uniquement pour le 1er argument.

Si quelqu'un sait comment faire, ce serait avec plaisir.

Bonne journée.

2 réponses

Whismeril Messages postés 19036 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 931
20 mars 2022 à 14:41
Bonjour

Avec une boucle for?
0
Fab121205 Messages postés 81 Date d'inscription dimanche 26 juillet 2015 Statut Membre Dernière intervention 20 mars 2022 5
20 mars 2022 à 15:04
Ouai merci, je vais sûrement faire comme ca.
Je voulais savoir si il existait une méthode prédéfinie qui faisait cela. C'était probable vu qu'il existe la méthode index() qui fait cela pour une liste simple.
Par exemple la méthode sort() des listes permet de spécifier exactement ce que l'on veut trier (même dans les listes intriquées) à l'aide d'une lambda.
Bonne journée.
0
jee pee Messages postés 39685 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 4 mai 2024 9 255
20 mars 2022 à 14:43
Bonjour,

Il te faut assimiler l'utilisation d'un double indice A[i][j].

Un peu de vocabulaire :
Un tuple : L1('aaa','bbb'), un tuple de tuples, 2D : L2(('aaa','bbb'),('aaa','bbb')) accéder aux données : L1[0] , L2[1][0]
Un tableau : T1['aaa','bbb'], un tableau de tableaux, 2D : T2[[aaa','bbb'],['aaa','bbb']] accéder aux données : T1[0] , T2[1][0]
(dans Python list en anglais, est souvent traduit liste, ou certains utilisent tableau)

La grande différence, un tuple est non modifiable alors qu'un tableau l'est, le tuple est défini par des parenthèses (), le tableau par des crochets [], et pour les 2 on utilise la même syntaxe pour accéder à une donnée de base [i]

Au moins sur les tuples et tableaux tu devrais approfondir : https://pixees.fr/informatiquelycee/n_site/nsi_prem_pythonSequence.html

Comme tu veux la 1ère valeur de ton tableau, il faut donner des bornes début, fin à index()
t = [ [34, "text", 345], [37, "text", 567], [345, 'text', 78] ]
for i in range(len(t)):
    try: 
       print(i,t[i],t[i].index(345,0,1))
       break
    except ValueError:
       pass


Ou sans utiliser list()
t = [ [34, "text", 345], [37, "text", 567], [345, 'text', 78] ]
for i in range(len(t)):
    if t[i][0] == 345:
       print(i,t[i]) 

0
Fab121205 Messages postés 81 Date d'inscription dimanche 26 juillet 2015 Statut Membre Dernière intervention 20 mars 2022 5
20 mars 2022 à 15:06
Merci,
je vais en effet utiliser une boucle "for", c'est gentil mais c'était pas la peine de rajouter la théorie sur les listes et tuples :)

Je voulais juste savoir si il existait une méthode prédéfinie qui faisait cela. C'était probable vu qu'il existe la méthode index() qui fait cela pour une liste simple.
Par exemple la méthode sort() des listes permet de spécifier exactement ce que l'on veut trier (même dans les listes intriquées) à l'aide d'une lambda.

Bonne journée.
0