Partage
  • Partager sur Facebook
  • Partager sur Twitter

supprimer élément d'une liste de listes

Sujet résolu
    3 février 2011 à 15:37:22

    Bonjour à tous !

    Voila je bloque sur un truc précis de mon programme. J'ai une liste de listes que j'initialise avec des " " et je voudrais supprimer tous les " " après toutes les opérations que j'ai fait dessus. Pour simplifier, je me contente du code suivant :

    liste2=[[""]*2 for _ in range(8)]
    
    liste2[0][0]=2
    liste2[0][1]=3
        
    i=len(liste2)-1
    while i>=0:
        j=1
        while j>=0:
            if (liste2[i][j]==""):
                liste2.remove(liste2[i][j])
            j-=1
        i-=1
    print liste2
    


    Et j'ai cette erreur :

    Traceback (most recent call last):
    File "C:/Python27/test4.py", line 43, in <module>
    liste2.remove(liste[i][j])
    ValueError: list.remove(x): x not in list


    Ca marche avec une liste normale, mais pas avec une liste de listes. Et je ne trouve rien sur internet à propos de ça...

    Merci d'avance!



    • Partager sur Facebook
    • Partager sur Twitter
      3 février 2011 à 15:58:58

      liste2[i].remove(liste2[i][j])
      • Partager sur Facebook
      • Partager sur Twitter
        3 février 2011 à 17:28:56

        Si tu veux "remplir" des listes avec "rien", utilise la constante None :

        matrice = [[None for _ in range(x)]
                         for _ in range(y)]
        
        matrice[0][5] = "Eggs & Bacon" # Tu peux modifier le contenu des cases à ta guise
        


        None signfie littéralement "rien" et est utilisé pour représenter l'absence de variable. C'est un objet d'un type qui lui est propre : le "NoneType"
        • Partager sur Facebook
        • Partager sur Twitter
          3 février 2011 à 18:11:26

          merci pour vos réponses !

          mais désormais j'ai une liste de listes comme ceci :
          [[2, 3], [], [], [], [], [], [], []]


          comment faire pour avoir uniquement [[2,3]] ?
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            3 février 2011 à 18:24:31

            Enfaite tu veux supprimer les listes qui contiennent une chaine vide ?
            • Partager sur Facebook
            • Partager sur Twitter
              3 février 2011 à 18:27:50

              Encore une fois, les compréhensions de liste se montrent très utile :

              mat = [[2, 3], [], [], [], [], [], [], []]
              
              petiteMat = [i for i in mat if i != []]
              


              Tu remarquera l'utilisation d'un prédicat (i != []): il permet de "trier" les éléments que tu souhaite inclure dans ta liste. En l'occurence, n'est ajouté i que si ce n'est pas une liste vide
              • Partager sur Facebook
              • Partager sur Twitter
                4 février 2011 à 1:37:20

                Note que tu peux aussi faire ça pour le premier :
                liste2 = [[e for e in li if e != ""] for li in liste]
                
                • Partager sur Facebook
                • Partager sur Twitter

                supprimer élément d'une liste de listes

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown