Partage
  • Partager sur Facebook
  • Partager sur Twitter

Inverser l'ordre des caractères dans une chaîne.

    28 juin 2020 à 3:05:18

    Bonjour,
    Un sujet a été fermé pour cause de déterrage dans une autre catégorie. Le sujet portait bien sur le langage Python.
    Le titre était assez semblable à celui-ci.
    J'ai pensé qu'il serait utile pour les débutants de savoir comment inverser l'ordre des caractères dans une chaîne. Je sais que ce sujet revient assez souvent.
    J'ai placé ensemble toutes les façons mentionnées dans ce sujet et je les présente ici.
    Je ne prétend pas que ce sont les seules, et qu'il n'y a pas de variantes, mais ce sont les principales.
    Si quelqu'un a des façon vraiment inédites, n'hésitez pas à les mentionner.
    -
    s="0123456789"
    #
    t=""
    i=len(s)-1
    while i>=0:
        t+=s[i]
        i-=1
    #
    t=""
    for i in range(len(s)-1, -1, -1):
        t+=s[i]
    #
    t=""
    for c in s:
        t=c+t
    #
    t=""
    for c in reversed(s):
        t+=c
    #
    t=''.join(reversed(s))
    #
    t=s[::-1]
    #
    print(t)
    • Partager sur Facebook
    • Partager sur Twitter

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

      28 juin 2020 à 8:51:44

      Il y a aussi les indices négatifs

      t = "".join(s[-i-1] for i in range(len(s)))



      -
      Edité par thelinekioubeur 28 juin 2020 à 8:51:59

      • Partager sur Facebook
      • Partager sur Twitter
        28 juin 2020 à 10:25:38

        en rusant un peu avec le passage d'arguments.
        >>> myStrReverse = lambda x,*xs :xs and myStrReverse(*xs)+x or x
        >>> 
        >>> myStrReverse(*'apprendre haskell ameliore mon python')
        'nohtyp nom eroilema lleksah erdnerppa'

        -
        Edité par josmiley 28 juin 2020 à 10:36:43

        • Partager sur Facebook
        • Partager sur Twitter

        Python c'est bon, mangez-en. 

          28 juin 2020 à 16:14:41

          Oulah, qu'est ce que c'est moche :D
          • Partager sur Facebook
          • Partager sur Twitter
            28 juin 2020 à 17:45:32

            thelinekioubeur a écrit:

            Oulah, qu'est ce que c'est moche :D

            Qu'est-ce qui est moche? C'est de l'art à la josmiley. :)

            • Partager sur Facebook
            • Partager sur Twitter

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

              28 juin 2020 à 18:32:29

              PierrotLeFou a écrit:

              thelinekioubeur a écrit:

              Oulah, qu'est ce que c'est moche :D

              Qu'est-ce qui est moche? C'est de l'art à la josmiley. :)


              toutafé
              • Partager sur Facebook
              • Partager sur Twitter

              Python c'est bon, mangez-en. 

                28 juin 2020 à 19:58:40

                josmiley a écrit:

                en rusant un peu avec le passage d'arguments.

                >>> myStrReverse = lambda x,*xs :xs and myStrReverse(*xs)+x or x
                >>> 
                >>> myStrReverse(*'apprendre haskell ameliore mon python')
                'nohtyp nom eroilema lleksah erdnerppa'

                ): sap uo

                -
                Edité par fred1599 28 juin 2020 à 19:58:54

                • Partager sur Facebook
                • Partager sur Twitter

                Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                  29 juin 2020 à 1:30:28

                  fred1599 a écrit:

                  josmiley a écrit:

                  en rusant un peu avec le passage d'arguments.

                  >>> myStrReverse = lambda x,*xs :xs and myStrReverse(*xs)+x or x
                  >>> 
                  >>> myStrReverse(*'apprendre haskell ameliore mon python')
                  'nohtyp nom eroilema lleksah erdnerppa'

                  ): sap uo

                  -
                  Edité par fred1599 il y a environ 5 heures

                  Celle-là, tu l'as fait à la main ...

                  • Partager sur Facebook
                  • Partager sur Twitter

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

                    29 juin 2020 à 14:54:17

                    PierrotLeFou a écrit:

                    fred1599 a écrit:

                    josmiley a écrit:

                    en rusant un peu avec le passage d'arguments.

                    >>> myStrReverse = lambda x,*xs :xs and myStrReverse(*xs)+x or x
                    >>> 
                    >>> myStrReverse(*'apprendre haskell ameliore mon python')
                    'nohtyp nom eroilema lleksah erdnerppa'

                    ): sap uo

                    -
                    Edité par fred1599 il y a environ 5 heures

                    Celle-là, tu l'as fait à la main ...

                    Ah non même pas... :D

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                      4 juillet 2020 à 11:41:49

                      Je ne comprends pas, pourquoi ne pas juste se contenter de s[::-1] ?

                      -
                      Edité par entwanne 4 juillet 2020 à 11:42:50

                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 juillet 2020 à 12:30:06

                        C'est soit s[::-1] soit reversed(s) selon l'algo.

                        "for c in reversed(s)" a de meilleures perfs que "for c in s[::-1]" surtout pour une très longue chaîne.

                        -
                        Edité par thelinekioubeur 4 juillet 2020 à 12:30:29

                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 juillet 2020 à 12:46:32

                          Oui oui, je parlais du cas où on cherche à obtenir une chaîne de caractères en retour.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            4 juillet 2020 à 17:49:34

                            @thelinekioubeu et @entwanne:
                            Vous êtes les expert, mais ...
                            s[::-1] s'utilise si on veut directement la chaîne.
                            reversed(s) s'utilise si on veut parcourir la chaîne et en faire autre chose, comme la garder à l'envers et éliminer certains caractères.
                            • Partager sur Facebook
                            • Partager sur Twitter

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

                              4 juillet 2020 à 18:41:21

                              def rec(a):
                                
                                  if len(a) == 0:
                                      return a
                                  else:
                                      return rec(a[1:]) + a[0]
                               
                              print(rec("etivisrucer al elitu tse C"))

                              -
                              Edité par ChFzaf 4 juillet 2020 à 18:41:49

                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 juillet 2020 à 19:26:51

                                ChFzaf a écrit:

                                def rec(a):
                                  
                                    if len(a) == 0:
                                        return a
                                    else:
                                        return rec(a[1:]) + a[0]
                                 
                                print(rec("etivisrucer al elitu tse C"))

                                -
                                Edité par ChFzaf il y a 38 minutes

                                Oui, c'est utile ... tu peux mettre l'apostrophe si tu utilises les guillemets.

                                • Partager sur Facebook
                                • Partager sur Twitter

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

                                Inverser l'ordre des caractères dans une chaîne.

                                × 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