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 :

Tableau python tutoSwinnen


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Par défaut Tableau python tutoSwinnen
    Bonjour,

    Je viens juste de commencer ce langage j'utilise ActivePython et je voudrais savoir comment convertir un tableau.

    (j'essaye de faire un exercice ):
    Le but étant d'avoir janvier , 30 , février , 28 etc.. dans un troisième liste
    Donc je concatène mais comment concaténer des tableau hélàs le Mr du tutoSwinnen de developpez.com me laisse chercher



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    t1 = [31, 28, 31,30]
    t2 = ['janvier','fevrier']
    a= 0
    while a < len(t1):
          t3[a] = int(t2[a])
          t4 = t3[a]+t2[a]
         print t4
    j'ai essayé un autre truc
    genre
    t2 = int(t2)
    mais j'ai argument must be a string or a number not a list

    J'avouerais qu'être largué ici me fait un peu peur pour la suite mais bon

    Merci pour vos réponses.

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Solution basique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    t1 = [31, 28, 31,30]
    t2 = ['janvier','fevrier', 'mars', 'avril']
    t3 = []
    for i, j in enumerate(t1): # pour récupérer l'élément et son indice
        t3.append((t2[i], j)) 
    print(t3)
     
    # [('janvier', 31), ('fevrier', 28), ('mars', 31), ('avril', 30)]
    Solution plus efficace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    t1 = [31, 28, 31,30]
    t2 = ['janvier','fevrier', 'mars', 'avril']
    t3 = []
    for i in zip(t1, t2):
        t3.append(i)
    print(t3)
    # [('janvier', 31), ('fevrier', 28), ('mars', 31), ('avril', 30)]
    Autre solution pour être dans la forme que tu souhaites

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> t1 = [31, 28, 31,30]
    >>> t2 = ['janvier','fevrier', 'mars', 'avril']
    >>> t3 = []
    >>> for i, j in zip(t1, t2):
    ...     t3.append(i)
    ...     t3.append(j)
    ... 
    >>> t3
    [31, 'janvier', 28, 'fevrier', 31, 'mars', 30, 'avril']
    Dans tous les cas, il faut que la longueur de t1 soit égale à la longueur de t2.

  3. #3
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Le deuxième code de fred est encore plus efficace comme ça *:

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    t1 = [31, 28, 31,30]
    t2 = ['janvier','fevrier', 'mars', 'avril']
    t3 = list(zip(t1, t2))
    print(t3)
    # [('janvier', 31), ('fevrier', 28), ('mars', 31), ('avril', 30)]

    Et même si c’est peut-être un peu trop avancé pour toi, je ne résiste pas à l’idée de réécrire le troisième en faisant appel à itertools.chain()*:

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import itertools
    t1 = [31, 28, 31,30]
    t2 = ['janvier','fevrier', 'mars', 'avril']
    t3 = list(itertools.chain(*zip(t1, t2)))
    print(t3)
    #[31, 'janvier', 28, 'fevrier', 31, 'mars', 30, 'avril']


  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Oui j'y ai pensé, mais j'ai déjà hésité avec zip alors utiliser un module, me semblait être un peu compliqué.

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Bien que le built in zip(1) soit la solution qui nous semble évidente je ne pense pas que le tuto(2) en soit là. Cela doit être un travail sur l'index (pas encore enumerate non plus).
    Puisque pit0n utilise while(3) une solution serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    i = 0
    while i < len(t1): 
        t3.append(t1[i])
        t3.append(t2[i])
        i += 1
    Pour un travail sur l'index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for index in range(len(t1)):
        t3.append(t1[index])
        t3.append(t2[index])
    Mais range est il abordé a ce niveau ?

    Bonne découverte pit0n

    @+

    (1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t3 = list(sum(zip(t1, t2), ()))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for r in zip(t1, t2):
       t3.extend(r)
    (2)
    Tuto que je n'ai pas suivit car cela m'a énerver de voir from Tkinter import *

    (3)
    Je ne comprend pas cette utilisation à outrance de while dans les tutos. Cela fini avec des
    et des conditions mal gérées.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Par défaut
    Merci pour les solutions , en effet le tuto n'est pas encore à ces notions
    et d'ailleurs list() ou zip() sont plus facile à utiliser pour moi mais je vais éviter la facilité à mon niveau

    J'ai essayé en faisant uniquement zip(t1, t2) sans le liste et cela fonctionne.
    J'ai donc regardé sur la doc cela retournerait une liste , il semble également que l'on parle de tuple pour les crochets et de liste pour les parenthèses .
    Donc je serais tenté d'utiliser les tuples pour les constantes .
    . Le range je connais d'un autre langage.
    Bizzarement c'est surtout dans l'affichage que je semble avoir des difficultés
    Si je reprend l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    t1 = [31, 28, 31,30]
    t2 = ['janvier','fevrier', 'mars', 'avril']
    t3 = []
    i = 0
    while i < len(t1): 
        t3.append(t1[i])
        t3.append(t2[i])
         i += 1
    print t3
    Je ne peux pas afficher t3? j'ai un file "<stdin>"
    (hum je ne sais pas l'afficher!)

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Par défaut
    Bonjour!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    # Utilisation d'une liste et de branchements conditionnels
    print "Ce script recherche le plus grand de trois nombres"
    print 'Veuillez entrer trois nombres séparés par des virgules : '
    # Note : la fonction list() convertit en liste la séquence de données qu'on
    # lui fournit en argument. L'instruction ci-dessous convertira donc les
    # données fournies par l'utilisateur en une liste nn :
    nn = list(input())
    max, index = nn[0], 'premier'
    if nn[1] > max:                   # ne pas omettre le double point !
        max = nn[1]
        index = 'second'
    if nn[2] > max:
        max = nn[2]
        index = 'troisième'
    print "Le plus grand de ces nombres est", max
    print "Ce nombre est le", index, "de votre liste.
    Je met 1,5,10 ou (1,5,10) juste après avoir tapé
    nn = list(input())
    et j'ai toujours la même erreur de syntaxe à la ligne 4
    apres avoir presse enter sur ceci >>>if nn[2] > max:
    <stdin>

    L'indentation dans le shell en ligne de commande n'est pas bon alors
    que dans le "mode graphique" pas de problème!

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Si tu veux chercher le nombre max dans une liste, il faut utiliser la boucle for et je ne pense pas que tu l'es vu.

    Avec la boucle while ça me soule, je fais pas, il faut travailler avec l'index.

    Sinon pour résoudre le problème facilement, preuve que python c'est puissant grâce à ses fonctions standards.


Discussions similaires

  1. passage de tableau python template et script jquery
    Par pat100 dans le forum jQuery
    Réponses: 4
    Dernier message: 19/09/2012, 11h59
  2. conversion d'un fichier csv en un tableau python
    Par titou_170 dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 25/11/2010, 11h40
  3. import des donnees python vers tableau
    Par tsicc dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 02/04/2008, 10h10
  4. Réponses: 4
    Dernier message: 25/07/2007, 10h29
  5. swig python tableau
    Par paulo2007 dans le forum Interfaçage autre langage
    Réponses: 1
    Dernier message: 23/04/2007, 09h18

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