Partage
  • Partager sur Facebook
  • Partager sur Twitter

Parcourir une liste de caractères

en affichant toutes les combinaisons avec les caracts qui se suivent

    30 juillet 2020 à 9:04:08

    Bonjour à tous, 

    Je souhaite afficher toutes les combinaisons d'une liste de caractères en ayant la contrainte d'afficher que les combinaisons avec les caractères qui se suivent

    exemple :

    liste_car = ["a","b","c"]

    sortie = ["a","b","c","ab","bc"]

    Je voulais utiliser itertools.combination mais 

    for i in range(1,len(s)+1):
            for comb in itertools.combinations(s,i):
                print(comb)
    

    Ce code me renvoie TOUTES les combinaisons. J'ai essaye avec 2 boucles mais je n'y arrive pas.

    Merci de votre aide!

    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2020 à 11:08:35

      Salut,

      Ce que tu veux au final c'est extraire toutes les sous-séquences réalisables dans ta liste, et je ne crois pas qu'il existe de fonction pour ça dans itertools. Mais ça se fait facilement à l'aide de boucles et de slices.

      • Partager sur Facebook
      • Partager sur Twitter
        1 août 2020 à 20:23:42

        Ton exemple est pas très clair... Pourquoi il n'y a pas "abc" et pourquoi il y a "a", "b" et "c" ???

        • Partager sur Facebook
        • Partager sur Twitter
          1 août 2020 à 21:01:36

          a = list('abcdefg')
          l = len(a)+1
          print([''.join(a[i:i+j]) for j in range(1,l) for i in range(l-j)])
          
          • Partager sur Facebook
          • Partager sur Twitter
            1 août 2020 à 22:48:34

            @josmiley
            Vraiment élégant, je savais même pas qu'on pouvait faire succéder plusieurs for à la suite !

            -
            Edité par ErispoeLeNarvalo 1 août 2020 à 22:51:10

            • Partager sur Facebook
            • Partager sur Twitter
              2 août 2020 à 2:11:06

              Moi je savais ... c'est josmiley qui me l'a appris :)
              Si tu dois payer ton annonce au carattère,  a = 'abcdefg'  fonctionne également.

              -
              Edité par PierrotLeFou 2 août 2020 à 2:13:49

              • Partager sur Facebook
              • Partager sur Twitter

              Le Tout est souvent plus grand que la somme de ses parties.

              Parcourir une liste de caractères

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown