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 :

probleme avec join et PATTERNLENGTH


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 29
    Par défaut probleme avec join et PATTERNLENGTH
    bonjour à tous,

    j'était avec un code que j'ai trouvé sur un scanner web, et je tombe sur cette ligne de code dont je ne comprend pas grand chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def _generatePattern(self): 
                """ 
                Generates a pattern 
                @return: a pattern like (xxxxxxxxxxxxxxx) 
                """ 
              return '('+''.join([random.choice(string.ascii_letters+string.digits) for x in xrange(self.PATTERNLENGTH)])+')'
    j'aimerai bien qu'on me l'explique, surtous la commande join avec la quelle j'ai toujours du mal.
    PS: PATTERNLENGTH=15
    """Sets the number of characters in the pattern"""

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    join() se trouve décrite dans 3.6.1 String Methods parce que c’est une méthode qui concatène des chaînes.
    Mais concaténer des chaînes, ça implique qu’elle prend en fait une SÉQUENCE de chaînes en argument, et qu’elle produit une chaîne (catena en latin = chaîne).

    Concaténer, c’est lier (con vient certainement de cum = avec , en latin).
    Et pour lier, il faut un liant.
    join() utilise le liant qu’on lui indique devant .join( )

    Ce peut être ’-’
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    s = set(['orange','banane','mangue','raisin'])
    print '-'.join(s)
    ou plusieurs caractères, ex. ’ .~^~. ’
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tu = ('Palais','De','La','Mediterranee')
    print ' .~^~. '.join(tu)

    Ce peut ètre aussi "", dans ce cas on accole toutes les chaînes de la séquence sans séparation entre elles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    li = ['AW','178',' Tango ','RWX','u678']
    print "".join(li)


    Astuce: pour afficher une liste de phrases à 1 phrase par ligne: utiliser ’\n’ comme liant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    li = ['Le temps a laissé son manteau','De vent, de froidure et de pluie,',\
          "Et s'est vêtu de broderie,",'De soleil luisant, clair et beau.']
    print '\n'.join(li)

    Une propriété hyper-intéressante, c’est que le liant n’est ajouté qu’ENTRE les éléments de la séquence. Pas en tête, ni en queue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print '*'.join('gasteropode')

    Tout ceci produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    orange-banane-raisin-mangue
     
    Palais .~^~. De .~^~. La .~^~. Mediterranee
     
    AW178 Tango RWXu678
     
    Le temps a laissé son manteau
    De vent, de froidure et de pluie,
    Et s'est vêtu de broderie,
    De soleil luisant, clair et beau.
     
    g*a*s*t*e*r*o*p*o*d*e


    ascii_letters , c’est
    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ


    string.digits c’est
    0123456789


    string.ascii_letters+string.digits c’est
    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789


    random.choice(string.ascii_letters+string.digits) prélève au hasard un élément de la chaîne abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 et le renvoie


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [random.choice(string.ascii_letters+string.digits) for x in xrange(self.PATTERNLENGTH)]
    définit une liste par compréhension. Ici x est un simple compteur qui n’intervient pas dans les éléments de la liste qui sont définis.


    Finalement , pour PATTERNLENGTH = 15 par exemple, la list comprehension produit une liste de 15 caractères prélevés au hasard dans la chaîne ci-dessus, et pour réobtenir une chaîne dans laquelle tous ces caractères seront à nouveau accolés, il est utilisé join() avec un liant "".

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 29
    Par défaut
    merci pour tes explications éclairées, maintenant je comprends plus le sens du join et de cette instruction.

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

Discussions similaires

  1. probleme avec join
    Par boulhous dans le forum Administration système
    Réponses: 0
    Dernier message: 01/04/2010, 13h00
  2. [BOOST_THREAD] probleme avec join
    Par babar63 dans le forum Boost
    Réponses: 0
    Dernier message: 26/11/2008, 11h27
  3. probleme avec LEFT JOIN multi tables
    Par hinsano dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/07/2006, 06h36
  4. Réponses: 8
    Dernier message: 11/05/2006, 23h18
  5. probleme avec OUTER / OUTER JOIN
    Par Volcomix dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 21/04/2004, 16h57

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