IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

indexation d'une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut indexation d'une liste
    Bonjour,

    J'ai une liste dont je souhaiterai avoir les indices, mais quand j'ai deux éléments qui ont la même valeur dans ma liste, mon instruction i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    indice = [liste.index(x) for x in liste]
    me renvoie le même index :

    exemple :

    liste= [2, 4, 36, 2, 5, 4]

    index obtenus = [0, 1, 2, 0, 4, 1]

    y'a t'il une instruction pour obtenir des index distincts indépendamment de la valeur des éléments de la liste?

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    euh...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    indices = range(len(liste))
    non ?

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut
    oui ça marche très bien, merci !

    Par contre j'ai une autre question; avec la meme liste, je souhaite créer une nouvelle liste nv_liste qui regroupe les éléments qui sont répétés :
    J'ai donc fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    liste= [2, 4, 36, 2, 5, 4]
    nv_liste = [x for x in split1 if liste.count(x) >1]
    Mais je voudrais aussi inclure l'ancien index de mon élément de la première liste.

    et le range(len(liste)) ne me servira pas je pense dans ce cas là à grand chose !

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Un truc comme çà?
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    def xx(li):
        dd = {}
        for index, item in enumerate(li):
            if item in dd:
                dd[item].append(index)
            else:
                dd[item] = [ index ]
        for item in dd.keys():
            if len(dd[item]) == 1:
                del dd[item]
        return dd
     
    L = [2, 5, 4, 1, 2]
    x = xx(L)
    print 'x: %s' % x
    ## retourne x: {2: [0, 4]}
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Ou comme ça ?
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def indm1(L):
        R=[]
        Q= [(x, [i for i in range(0,len(L)) if L[i]==x]) for x in L if L.count(x)>1] 
        for x in Q:
            if x not in R:
                R+=[x]
        return R
    Ou comme ça (plus efficace):
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def indm2(L):
        R=[[],[]]
        for x in L:
            if x not in R[0] and L.count(x)>1 :
                R[0].append(x)
                R[1].append([i for i in range(0,len(L)) if L[i]==x])
        return R
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Verbeux Zavonen, verbeux
    Alors qu'on peut faire cela en une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ff = lambda L : [ (a, [ c for i, c in zip (L, range(len(L))) if i == a ]) for a, c in [(a, L.count(a)) for a in set(L)] if c > 1 ]
    Mais ce n'est pas recommendable
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur d'index sur une List<int> dans boucle for
    Par popoliline dans le forum C#
    Réponses: 13
    Dernier message: 16/06/2010, 11h03
  2. undefined index dans une liste dynamique
    Par monlou dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2010, 08h25
  3. menu personalisé : récupérer la l'index d'une liste
    Par angetec dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/11/2009, 14h00
  4. 'Undefined index' sur une liste issue d'une requete
    Par Gareth dans le forum Langage
    Réponses: 9
    Dernier message: 26/05/2009, 11h35
  5. [VB5]Connaitre l'index d'une liste via son contenu
    Par guda dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 15/10/2005, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo