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 :

remplir un tableau 2D


Sujet :

Python

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut remplir un tableau 2D
    Bonjour à tous,

    J'extrais les données d'un fichier, je lis ligne par ligne, je sépare les éléments de chaque ligne (séparateur = \t).
    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
    from os import chdir, getcwd
    chdir("H:/programs/python_programs/files")
    rep_cour = getcwd()
     
    f = open('DIXA-001.txt','r')
    lignes  = f.readlines()
    f.close()
     
    table = []
     
    for index in range(1, len(lignes)):
    	data = lignes[index].rstrip("\n")
    	list = data.split("\t")
     
    	# check these 2 colomns are always equal
    	if list[9] != list[10] :
    		print(index)
    J'aimerais ensuite, mettre le tout dans un tableau 2D (var : table)

    Ceci ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	# list = data of one line	
    	for i in range(0, len(list)):	
    		table[i][index]= list[i]
    erreur : IndexError: list index out of range
    J'ai essayé en créant un tableau 2D vide, avant les boucles, mais j'avais la même erreur

    Sinon, je remplis mon tableau ansi :
    Mais ensuite, je voudrais avoir la matrice transposée, connaissez-vous des fonctions ?

    D'avance merci,
    -- Jasmine --

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Voila un code pour le tableau transposé, mais j'ai toujours la même erreur ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	for i in range(len(table)):
    		# iterate through columns
    		for j in range(len(table[0])):
    			transposed[j][i] = table[i][j]
    transposed[j][i] = table[i][j]
    IndexError: list index out of range
    -- Jasmine --

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Ce que vous appelez "tableau" n'est qu'une liste de listes. Et si vous essayez d'accéder à liste[i] avec un i qui ne vérifie par len(liste) <= i < len(liste), cela vous retournera IndexError. Vous n'avez pas 36 solutions: créer une liste à N éléments et les remplacer par les valeurs désirées, faire des .append pour ajouter les éléments au fur et à mesure.
    C'est pareil pour "transposed"! Sauf que vous pouvez dans ce cas utiliser la fonction zip pour fabriquer la transposée.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci pour votre réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	for i in range(0, len(list)):	
    		table[i][index]= list[i]
    table est une liste vide
    dans le for, i va prendre la valeur de 0 à la longueur de list ... donc, list[i] existe toujours non ? Que dois-je vérifier ? Je suis un peu perdue.

    Je dois obligatoirement créer une liste 'table' vide ? je ne peux pas déclarer un objet en lui assignant en même temps une valeur ? table[i][index]= list[i]

    D'avance merci.
    -- Jasmine --

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    table est une liste vide
    dans le for, i va prendre la valeur de 0 à la longueur de list ... donc, list[i] existe toujours non ? Que dois-je vérifier ? Je suis un peu perdue.
    Je dois obligatoirement créer une liste 'table' vide ? je ne peux pas déclarer un objet en lui assignant en même temps une valeur ? table[i][index]= list[i]
    Il n'y a rien à vérifier, juste essayez de comprendre ce que vous essayez de faire subir à un objet de type liste.
    Vous pouvez lancer la console Python et "voir" ce qu'il se passe en essayant de "copier" une liste A dans une liste B "vide":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> A = [1, 2, 3, 4]
    >>> B = []
    >>> for i in range(len(A)):
    ...     B[i] = A[i]
    ...
    Traceback (most recent call last):
      File "<stdin>", line 2, in <module>
    IndexError: list assignment index out of range
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci, je comprends maintenant. C'est ennuyant, je dois donc parcourir deux fois mon fichier. La première pour connaitre le nombre de lignes et de colonne et ainsi les dimensions de ma future liste. Créer la liste de liste vide puis reparcourir le fichier pour y insérer les données. Je vais faire ainsi, encore merci.
    -- Jasmine --

  7. #7
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Le fichier contient du texte ou des valeurs (réelles ou entières) ?
    Numpy pourrait peut-être vous aider.
    Pas d'aide par mp.

  8. #8
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Merci pour votre réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	for i in range(0, len(list)):	
    		table[i][index]= list[i]
    table est une liste vide
    dans le for, i va prendre la valeur de 0 à la longueur de list ... donc, list[i] existe toujours non ? Que dois-je vérifier ? Je suis un peu perdue.

    Je dois obligatoirement créer une liste 'table' vide ? je ne peux pas déclarer un objet en lui assignant en même temps une valeur ? table[i][index]= list[i]

    D'avance merci.
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> t = [1, 2]
    >>> t[3]
    Traceback (most recent call last):
      File "<pyshell#7>", line 1, in <module>
        t[3]
    IndexError: list index out of range
    >>>
    Peut-être confondez-vous les listes. C'est une mauvaise idée de nommer une liste par "list".

    Et ainsi que le disait wiztrics, append est utile afin de dimensionner le tableau correctement.
    Il n'est pas utile de lire le fichier à deux reprises!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> lst1 = [1, 2, 3]
    >>> nv = []
    >>> for ind in range(len(lst1)):
    	nv.append(lst1[ind])
     
     
    >>> nv
    [1, 2, 3]
    >>>
    Clodion

    PS: pour une transposition simple d'une liste de listes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
     
    nv = [[] for x in range(len(lst[0]))]
    for lig in range(len(lst[0])):
        for col in range(len(lst)):
            nv[lig].append(lst[col][lig])
    print(lst)
    print(nv)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> 
    [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
    [[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]
    >>>

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Merci, je comprends maintenant. C'est ennuyant, je dois donc parcourir deux fois mon fichier. La première pour connaitre le nombre de lignes et de colonne et ainsi les dimensions de ma future liste. Créer la liste de liste vide puis reparcourir le fichier pour y insérer les données. Je vais faire ainsi, encore merci.
    Lorsque vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f = open('DIXA-001.txt','r')
    lignes  = f.readlines()
    "lignes" est une "list" de chaines de caractères (les lignes du fichier).
    Ce que vous appelez "colonne" est juste la transformation en liste de ces chaines de caractères via le .split('\t') qui arrive après.
    Plutôt qu'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    table = []
     
    for index in range(1, len(lignes)):
    	data = lignes[index].rstrip("\n")
    	list = data.split("\t")
    Il serait plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    table = []
     
    for ligne in lignes[1:]:
    	table +=  ligne.rstrip("\n").split("\t")
    i.e. on ajoute à table une liste de chaîne de caractères à chaque itération.
    In fine, table sera bien une liste de listes (et pourra être accessoirement considéré comme "tableau" i.e. une chose dont on accède aux éléments par 2 indices).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par marco056 Voir le message
    Le fichier contient du texte ou des valeurs (réelles ou entières) ?
    Numpy pourrait peut-être vous aider.
    Non, ce sont des données de type 'texte', mais merci pour ce commentaire.
    -- Jasmine --

  11. #11
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Il serait plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    table = []
     
    for ligne in lignes[1:]:
    	table +=  ligne.rstrip("\n").split("\t")
    i.e. on ajoute à table une liste de chaîne de caractères à chaque itération.
    In fine, table sera bien une liste de listes (et pourra être accessoirement considéré comme "tableau" i.e. une chose dont on accède aux éléments par 2 indices).

    - W
    Merci, grâce à ces explications, je commence à comprendre le problème, je n'obtiens pas une liste de liste, mais une simple liste de cette façon. C'est pour cela que mon code plante depuis le début. Je pense travailler avec une liste à 2D, alors que ce n'est pas le cas.
    -- Jasmine --

  12. #12
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Clodion Voir le message
    Peut-être confondez-vous les listes. C'est une mauvaise idée de nommer une liste par "list".

    Et ainsi que le disait wiztrics, append est utile afin de dimensionner le tableau correctement.
    Il n'est pas utile de lire le fichier à deux reprises!!
    [/CODE]
    Oui, merci, j'ai renommé 'list', 'data_list'. 'Table' a comme colonnes les lignes de mon fichier (sauf la premières avec les entêtes), et comme lignes ses colonnes. Je ne peux donc pas créer d'avance un tableau vide sans avoir compter mes lignes et colonnes du fichier d'entrée. Enfin, comme je n'ai que 2 fichiers, je peux toujours tricher et manuellement entrer ces données.

    Je lis le fichier, je crée 'table' qui a sa structure, en y ajoutant une ligne après une autre (une ligne = une liste au sein de cette liste de liste), je la transpose pour obtenir ce dont j'ai besoin.

    ... tiens, peut-être qu'en utilisant 'readline()', en ayant un string à manipuler avec 'split()' ... ça serait peut-être plus simple !


    Citation Envoyé par Clodion Voir le message
    PS: pour une transposition simple d'une liste de listes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
     
    nv = [[] for x in range(len(lst[0]))]
    for lig in range(len(lst[0])):
        for col in range(len(lst)):
            nv[lig].append(lst[col][lig])
    print(lst)
    print(nv)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> 
    [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
    [[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]
    >>>
    Merci, ça me sera très utile quand j'aurai ma première liste de liste.
    -- Jasmine --

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Merci, grâce à ces explications, je commence à comprendre le problème, je n'obtiens pas une liste de liste, mais une simple liste de cette façon. C'est pour cela que mon code plante depuis le début. Je pense travailler avec une liste à 2D, alors que ce n'est pas le cas.
    ah oui, mon code est faux... raison de plus pour "voir" comment çà se passe à la console Python avec des objets plus simples mais "généralisables":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> lines = [ 'A,A',  'B,B', 'C,C' ]  # le fichier contient des lignes de "texte".
    >>> T = []
    >>> for e in lines:
    ...     T += [ e.rstrip('\n').split(',')]
    ...
    >>> T
    [['A', 'A'], ['B', 'B'], ['C', 'C']]
    Ce qui sort bien une liste de listes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> T[1][1]
    'B'
    >>> T[1][1] = 'X'
    Pour "transposer" c'est trivial:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> list(zip(*T))
    [('A', 'B', 'C'), ('A', 'X', 'C')]
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Super Wiztricks, ça fonctionne, je ne connaissais pas zip(), c'est vraiment utile. J'ai aussi découvert pprint(), que je pense utiliser souvent.
    Il faut absolumenet que j'étudie les mots 'réservés' de Python, tel que 'list' et que je ne nomme plus mes variables ainsi.
    Cette partie de code est terminée, mais je reviendrai certainement ultérieurement avec de nouvelles questions. Bonne journée et merci à tous pour votre aide.
    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
    import pprint
     
    from os import chdir, getcwd
    chdir("H:/programs/python_programs/files")
    rep_cour = getcwd()
     
    f = open('DIXA-001.txt','r')
    lines  = f.readlines()
    f.close()
     
    table_data = []
     
    for e in lines[1:]:
    	table_data += [ e.rstrip('\n').split('\t')]
     
    trans_table = list(zip(*table_data))	
     
    pp = pprint.PrettyPrinter(indent=4)
    pp.pprint(trans_table)
    -- Jasmine --

  15. #15
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 811
    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 : 3 811
    Points : 7 096
    Points
    7 096
    Par défaut
    Je ne sais pas si la finalité du problème est la même, mais sur un autre forum, une réponse avait déjà été donnée dans le même style, je le colle

    Pour une rotation à 90°

    • On transpose la matrice
    • On inverse chaque ligne

    Pour une rotation à -90°

    • On transpose la matrice
    • On inverse chaque colonne

    Comment on transpose ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from random import randint
     
    m = 8
    plateau = [[randint(0,2) for i in range(m)] for j in range(m)]
     
    for l in plateau:
        print(l)
     
    plateauT = list(map(list, zip(*plateau))) # transposée de plateau
     
    print('*' * 50)
     
    for l in plateauT:
        print(l)
    L'algorithme de la transposée de la matrice
    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
    from random import randint
     
    m = 8
    plateau = [[randint(0,2) for i in range(m)] for j in range(m)]
     
    for l in plateau:
        print(l)
     
    print('*' * 50)
     
    # Transposée de la matrice (algorithme)
     
    plateauT = [[None for i in range(m)] for j in range(m)]
     
    for i in range(m):
        for j in range(m):
            plateauT[j][i] = plateau[i][j]
     
    # lecture de la matrice transposée
     
    for l in plateauT:
        print(l)
    Inversion d'une ligne de la matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    array = [1, 2, 3]
    arrayInv = array[::-1]
    print(arrayInv)
    Algorithme de l'inversion d'une ligne de la matrice


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    array = [1, 2, 3]
    arrayInv = [None for i in range(len(array))]
     
    for i in range(len(array)):
        arrayInv[i] = array[len(array)-i-1]
     
    print(arrayInv)
    Inversion des colonnes d'une matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    matrix = [[1, 2, 3], [4, 5, 6]]
    print(matrix[::-1])
    Algorithme de l'inversion des colonnes d'une matrice


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    matrix = [[1, 2, 3], [4, 5, 6]]
    matrixInv = [[None for i in range(len(matrix[0]))] for j in range(len(matrix))]
     
    for i in range(len(matrix)):
        matrixInv[len(matrix)-1-i] = matrix[i]
     
    print(matrixInv)
    Si mes souvenirs sont bons, car moi et les maths...

    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)

  16. #16
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Pas essentiel, mais un petit truc sympa pour l'ouverture de fichier et la lecture ligne par ligne en sautant la première:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    table_data = []
    with open('DIXA-001.txt') as f:
        next(f)
        for e in f:
            table_data += [ e.rstrip('\n').split('\t')]
     
        trans_table = list(zip(*table_data))	
     
        pp = pprint.PrettyPrinter(indent=4)
        pp.pprint(trans_table)
    Comme ça avec with, la suite de ton code est conditionnée à la réussite de l'ouverture du fichier (pas besoin de faire de try: pour une gestion d'erreur), le fichier est lu ligne par ligne (ce qui peut être utile pour économiser de la mémoire quand le fichier est long), plus besoin de close. Il suffit ensuite de se référer au filehandler, pour passer à la ligne suivante avec next(f) et boucler sur les lignes restantes.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  17. #17
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci Fred et merci CosmoKnacki, ça pourra toujours me servir plus tard. Mon algorithme est terminé, je peux clore cette discussion.
    -- Jasmine --

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/12/2005, 16h39
  2. remplir un tableau sans doublons ...
    Par ryo-san dans le forum C
    Réponses: 22
    Dernier message: 10/11/2005, 12h43
  3. Remplir un tableau associatif
    Par photorelief dans le forum Langage
    Réponses: 1
    Dernier message: 04/11/2005, 18h20
  4. Lire et remplir un tableau
    Par harris_macken dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 26/09/2005, 01h10
  5. [PHP-JS] Remplir un tableau javascript selon un tableau php
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/01/2005, 14h02

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