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 :

récupérer les colonnes d'une matrices


Sujet :

Python

  1. #1
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Points : 43
    Points
    43
    Par défaut récupérer les colonnes d'une matrices
    salut jai une matrice(liste de liste) je veux récupérer la transposé de cette matrice.jai ecrit un peti programme mais il y a une erreur list index out of range jai pas su comment la résoudre.
    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
    31
    32
    33
     
     
    import sys
    import re
    def main():
    	liste7=[['a','b','c'],['d','e','f','j'],['h','i'],['m','n','o','p','k','l']]
    	liste=[]
    	for i in range(len(liste7)):
    		for j in range(len(liste7)):
    			liste.append(len(liste7[j]))
    		max=0
    		for i in range(len(liste)):
    			if liste[i]>max:
    				max=liste[i]
    				indice_max=i
    		print "le max",max
    		for i in range(len(liste7)):
    			if (len(liste7[i])<max):
    				print "inf a max",len(liste7[i])
    				diff=max-len(liste7[i])
    				for k in range(diff):
    					liste7[i].append("")
    		print liste7
    		for i in range(len(liste7)):
    			print len(liste7[i])
    		liste2=[]
    		for i in range(len(liste7)-1):
    			for j in range(len(liste7[i])-1):
    				print liste7[i][j]
    				liste2.append(liste7[j][i])
    			print liste2
    			liste2=[]
    main()
    le probléme dans la lignes ou il ya liste7[j][i]

  2. #2
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Je ne vois pas trop ce que vous cherchez à faire mais êtes vous sur de [j][i] ?

    @+

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Si je comprends bien, la première partie du code complète chaque sous-liste de liste7 par des chaînes vides afin qu'elles aient toutes la même longueur, et la suite est une tentative de transposition de la matrice résultante.

    Un idiome Python pour transposer une matrice est zip(*mat); mais le problème est que zip se base sur la longueur de la plus courte des sous-listes, et non la plus longue; il pourrait être utilisé pour la seconde partie du code, après avoir complété la matrice.

    Mais il y a plus simple. Dans le module itertools, il y a la fonction izip_longest (Python 2.6+), qui se base sur le plus long de ses arguments, on doit lui indiquer avec quelle valeur remplir les listes plus courtes. izip_longest retourne un itérateur; il faut donc passer par un appel à list pour reconstruire une liste.

    Cela donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from itertools import izip_longest
    >>> liste7=[['a','b','c'],['d','e','f','j'],['h','i'],['m','n','o','p','k','l']]
    >>> print list(izip_longest(*liste7, fillvalue=''))
    [('a', 'd', 'h', 'm'), ('b', 'e', 'i', 'n'), ('c', 'f', '', 'o'), ('', 'j', '', 'p'), ('', '', '', 'k'), ('', '', '', 'l')]

  4. #4
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Pas évident à suivre ce code...
    En soit pourquoi ne pas recréer votre matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> max=6
    >>> liste2=[list('' for i in range(max)) for i in range(max)]
    >>> print liste2
    [['', '', '', '', '', ''], ['', '', '', '', '', ''], ['', '', '', '', '', ''], ['', '', '', '', '', ''], ['', '', '', '', '', ''], ['', '', '', '', '', '']]
    Et la remplir (Comprendre [j][i]) ?

    @+

  5. #5
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Points : 43
    Points
    43
    Par défaut
    bonjour dividee,
    sa a marché merci :

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

Discussions similaires

  1. récupérer les données d'une matrice
    Par olivier59820 dans le forum MATLAB
    Réponses: 1
    Dernier message: 14/07/2011, 17h59
  2. Réponses: 2
    Dernier message: 08/12/2010, 12h59
  3. Opérations sur les colonnes d'une matrice
    Par george216 dans le forum MATLAB
    Réponses: 6
    Dernier message: 04/01/2010, 08h08
  4. [MySQL] Récupérer les colonnes d'une table MySQL
    Par Jeetiz dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/06/2007, 20h10

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