Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème de conversion et modif de liste

    19 décembre 2015 à 14:05:02

    Bonjour à tous,

    J'ai une liste telle que :

    [[899, 6237], [898, 6237], [897, 6237], [896, 6237], [895, 6237], [899, 6238], [898, 6238], [897, 6238], [896, 6238], [895, 6238], [899, 6239], [898, 6239], [897, 6239], [896, 6239], [895, 6239], [899, 6240], [898, 6240], [897, 6240], [896, 6240], [895, 6240]]

    J'aimerais que les valeurs contenues dans chaque sous listes deviennent des chaines de 4 caractères de long. Voici ce que j'aimerais obtenir avec le 1er composant de la liste :

    ['0899','9237']

    Merci pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      19 décembre 2015 à 16:03:49

      On pourrait faire quelque chose dans ce goût là (j'ai généralisé le problème à des listes et des nombres de taille quelconque):

      def transforme_nb(n, p):
          """Transforme un nombre n de 1 à p chiffres en nombre à p chiffres"""
          nb = str(n)
          chaine = '0' * (p - len(nb))
          return chaine + nb
      
      def transforme_liste(L, p):
          """Applique transforme_nb à une liste de nombres"""
          return list(map(lambda n: transforme_nb(n, p), L))
      
              
      liste = [[899, 6237], [898, 6237], [897, 6237], [896, 6237], [895, 6237],
               [899, 6238], [898, 6238], [897, 6238], [896, 6238], [895, 6238],
               [899, 6239], [898, 6239], [897, 6239], [896, 6239], [895, 6239],
               [899, 6240], [898, 6240], [897, 6240], [896, 6240], [895, 6240]]
      p = 4
      
      liste = list(map(lambda L: transforme_liste(L, p), liste))
      
      print(liste)
      ##[['0899', '6237'], ['0898', '6237'], ['0897', '6237'], ['0896', '6237'],
      ## ['0895', '6237'], ['0899', '6238'], ['0898', '6238'], ['0897', '6238'],
      ## ['0896', '6238'], ['0895', '6238'], ['0899', '6239'], ['0898', '6239'],
      ## ['0897', '6239'], ['0896', '6239'], ['0895', '6239'], ['0899', '6240'],
      ## ['0898', '6240'], ['0897', '6240'], ['0896', '6240'], ['0895', '6240']]
      • Partager sur Facebook
      • Partager sur Twitter
        19 décembre 2015 à 16:23:29

        Merci, 

        Entretemps j'ai découvert la fonction format.

        myList =[[format(a, '04'), format(b, '04')] for a, b in myList]

        Ca fait le job. Mais je garde sous le coude ton système pour l'étudier.

        • Partager sur Facebook
        • Partager sur Twitter
          19 décembre 2015 à 16:30:25

          La méthode format peut être adapté à ce traitement:

          lst = [[899, 6237], [898, 6237], [897, 6237], [896, 6237], [895, 6237],
                 [899, 6238], [898, 6238], [897, 6238], [896, 6238], [895, 6238],
                 [899, 6239], [898, 6239], [897, 6239], [896, 6239], [895, 6239],
                 [899, 6240], [898, 6240], [897, 6240], [896, 6240], [895, 6240]]
          
          transfo = [["{:04d}".format(E1), "{:04d}".format(E2)] for E1, E2 in lst]
          print(transfo)


          Edit: Ah bah apparemment tu l'as trouvé :D

          -
          Edité par Olygrim 19 décembre 2015 à 16:35:14

          • Partager sur Facebook
          • Partager sur Twitter
          Précepte: Le mieux est l'ennemi du bien

          problème de conversion et modif de liste

          × 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