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 :

Parcourir un tableau à 2 dimensions


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut Parcourir un tableau à 2 dimensions
    Bonjour,

    je dipose d'un tableau à dimensions et j'ai un peu de mal à m'en sortir quant à son parcours

    Mon problème est le suivant, en abscisse j'ai une colonne avec des noms de famille,

    et en ordonnées j'ai des prénoms, avec le nombre de fois qu'ils sont associés aux noms de familles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
                              HENRY          JEAN          TOTO
     
    MARTIN                  2                   0                  1
    DUPONT                 1                   1                  0

    Je voudrai écrire dans un fichier de sortie les différentes combinaisons possibles pour chacun des noms, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     MARTIN HENRY
    MARTIN TOTO
    DUPONT HENRY
    DUPONT JEAN
    ...

    Et je ne m'en sors pas avec le parcours du tableau, j'ai commencé par stocker tous mes noms de familles dans une liste, mais ensuite je n'arrive pas à traiter chacun des éléments de cette liste.

    Voci mon script (non fonctionnel):
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
     
    fichier = open("summary_ET_2tre.txt","r") #fichier de lecture
     
    sortie = open("test.txt", "wb")		#fichier de sortie
     
    liste = []
    i = 0
    for ligne in fichier.readlines():	#parcours du fichier
    	cols = ligne.rstrip('\n').split('	')
    	liste.append(cols[0])		#remplissage de la liste
     
     
     
     
     
    for i in liste:                        #parcours de la liste
     
     if cols[3] != 0:
    	sortie.write("'%s','%s'\n" % (i, cols[3))    #test sur la colonne 3
     
     
     if cols[4] != 0:
    	sortie.write("'%s','%s'\n" % (i, cols[4))	
     
     
     
     
     i += 1  # on traite le nom de famille suivant

    Si vous aviez une piste, je pense que mon parcours de la liste est mauvais, et l'incrémentation ne marche pas (étant que le i représente une chaine de caractère), bref je ne vois pas trop comment m'en sortir

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 067
    Par défaut
    c'est quoi ce tableau ? un dict ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut
    Pardon en fait je me suis mal exprimé, je schématise ca comme un tableu à 2 dimensions mais il s'agit en fait d'un fichier texte contenant des colonnes. Une colonne "horizontale" avec les noms de famille et des colonnes "verticales'" avec les prénoms.

  4. #4
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut
    Bonjours,
    Voici un code.
    Il fonctionne à partir du fichier texte que j'ai récupéré dans ton post.
    Les points importants sont
    Le split() qui supprime une suite d'espace pour créer une liste.
    La création de clés sur la ligne 0

    Cordialement

    Alex

    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
    #! /usr/bin/env python
    #coding=utf-8
     
    fo=open("source.txt","r")
    lignes=fo.readlines()
     
    keys=lignes[0].split()[0:] # Récupération des clés en ligne 0
    print "keys :",keys
     
    sortie=[] # liste des tuples de sortie
    for ligne in lignes[2:]:
        for col,text_col in enumerate(ligne.split()[1:]):
            if text_col!="0":
                sortie.append( (ligne.split()[0],keys[col])) # rajout si != de zero
    print sortie

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 067
    Par défaut
    en me basant sur le texte que tu as donné ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with open("summary_ET_2tre.txt","r")as f:
        f = [foo.split()for foo in f.read().splitlines()if foo]
        prenoms = f.pop(0)
        with open("test.txt", "wb")as output:
            output.write('\n'.join(['%s %s'%(i[0],prenom)for i in f for j,prenom in zip(i[1:],prenoms) if j!='0']))
    on peut sûrement faire plus court ...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut
    Merci à tous les deux pour vos scripts, je vais les étudier et essayer de les appliquer à mon problème

Discussions similaires

  1. Parcourir un tableau à 2 dimensions
    Par Smix007 dans le forum C#
    Réponses: 2
    Dernier message: 13/04/2010, 22h07
  2. Parcourir et affichage d'un tableau à 2 dimensions
    Par Jcpan dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2009, 08h55
  3. Comment créer et parcourir un tableau à deux dimensions en java SE
    Par Invité dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 25/02/2009, 11h07
  4. Parcourir un tableau 2 dimension
    Par Ya7yaKech dans le forum Windows Forms
    Réponses: 1
    Dernier message: 23/02/2009, 10h24
  5. [langage] Parcourir un tableau
    Par Jibees dans le forum Langage
    Réponses: 13
    Dernier message: 22/04/2003, 14h18

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