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 :

generaliser une matrice a l'aide d'une fonction


Sujet :

Python

  1. #1
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut generaliser une matrice a l'aide d'une fonction
    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
     matrice .Soit Z = [] ; à partir de Z , créer une matrice M [[1,2,3],[4,5,6]] et il faut créer une expression pour n'importe quelle matrice de n lignes par m colonnes .
     
    j'ai essayer plusieurs code et j'ai tenter celui la mais il m'envois riien ?
     
    def M(m, n) :
    ...     M = []
    ...     curre = 0
    ...     for i in range(m) :
    ...             line = []
    ...             for j in range(n) :
    ...                     line.append(curre + 1)
    ...                     curre += 1
    ...     return M.append(line)
    ... 
    >>> M(2, 3)
    >>> 
     
    car il me faut une matrice quand je tappe M(3,3)
    va m'envyais exemple [[1,2,3],[4,5,6],[7,8,9]]
     
    aidez moi svp

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,
    Ce sujet a déjà été traite, il y a peu, ici.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 578
    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 578
    Par défaut
    Rien n'empêche aussi de regarder les cours python, ça aide pour utiliser ce langage en général.

  4. #4
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    oui j'ai tout vu mais le probléme c'est pas généraliser car moi je cherche quand j'appelle
    une fonction qui me renvois une matrice de telle colonne et ligne

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ce n'est pas très compliqué. Quelquefois il suffit de donner un nom compréhensible aux variables pour que ça s'éclaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def matrice(nlig, ncol) :
        M = []
        for ilig in range(0, nlig) : # ilig=indice de la ligne
            M.append([]) # on ajoute une ligne (= une sous-liste) vide supplémentaire
            for icol in range(0, ncol) : # icol=indice de la colonne
                M[-1].append(ilig*ncol+icol+1) # M[-1] est la dernière sous-liste ajoutée
        return M
     
    print matrice(3,3)
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

  6. #6
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    woow pour vous c'est facile mais pas pour une débutante comme moi

    M[-1].append(ilig*ncol+icol+1 je n'es pas compris cette ligne

    merci

  7. #7
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    C'est un code très méthodique .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> def matrice(nlig, ncol) :
    	M = []
    	for ilig in range(0, nlig) :
    		M.append([])
    		for icol in range(0, ncol) :
    			M[-1].append(ilig*ncol+icol+1)
    	return M
     
    >>> matrice(3, 4)    # en effet , trés pratique .
    [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
    ilig*ncol+icol+1, cette expression ressemble à la formule 3*x+ y + 1 ,sauf que là ilig et ncol sont comme des variables à l'intérieur de la fonction .
    Le M[-1] sert à éviter une liste vide ou une mauvaise identification de la liste ?
    En tout cas , avec M[-1] , on est sure que les listes vont se suivre en fonction des arguments qu'on mets ....

  8. #8
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par l1informatique Voir le message
    M[-1].append(ilig*ncol+icol+1 je n'es pas compris cette ligne
    Imaginons que dans la boucle nous ayons déjà traité la 1ère ligne. On a donc:

    Pour créer la 2ème ligne, on commence (ligne 4) par ajouter une sous-liste vide avec M.append([]). On obtient donc:

    Ce qu'il faut maintenant, c'est remplir cette 2ème sous-liste, c'est à dire la 2ème ligne de la matrice. Et on utilise M[-1] pour une raison simple: quand Python trouve un index négatif (-1), il ajoute la longueur de la liste (ici 2) ce qui donne +1 qui est bien l'indice recherché du 2ème élément (les indices commencent par 0). L'avantage est que M[-1] sera TOUJOURS le dernier élément, quelque soit son indice: ça marchera donc aussi pour la 3ème ligne.

    Ensuite, quand on ajoute une valeur M[-1].append(4) à cette sous-liste, cela donne, par exemple:

    Puis, avec M[-1].append(5):

    Etc...

    Quand au "ilig*ncol+icol+1", il n'était là que pour que tu obtiennes les valeurs souhaitées dans la matrice. Tu peux voir la progression en ajoutant un print dans la boucle.

  9. #9
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    daccord

    merci beaucoup pour l'explication

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,

    Le M[-1] traduit "oops, j'ai oublie de remplir la dernière ligne".

    Remplir la ligne avant de faire .append serait plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def matrice(r,c):
        M = []
        for x in range(r):
            row = []
            for y in range(c):
                row.append(x*c + y + 1)
            M.append(row)
        return M
    Et comme nous avons donne un nom ("row") a la dernière ligne, nous pouvons y accéder directement, sans avoir a le "calculer" a chaque itération:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def matrice(r,c):
        M = []
        for x in range(r):
            row = []
            M.append(row)
            for y in range(c):
                row.append(x*c + y + 1)
        return M
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def matrice(r,c):
        M = []
        for x in range(r):
            row = []
            M.append(row)
            for y in range(c):
                row.append(x*c + y + 1)
        return M
    - W[/QUOTE]

    c'est quoi la valeur de x et y genre s'il en tappe matrice(2,3) que python donne a x et a y ?juste pour comprendre qui ce qui se passe a cette ligne row.append(x*c + y + 1)

  12. #12
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Tu devrais te poser plus la question :
    Quelles sont les valeurs que prends x et y par rapport à range ?

  13. #13
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par l1informatique Voir le message
    c'est quoi la valeur de x et y genre s'il en tappe matrice(2,3) que python donne a x et a y ?juste pour comprendre qui ce qui se passe a cette ligne row.append(x*c + y + 1)
    Python est un langage interprété.
    L'avantage est de pouvoir taper rapidement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> for x in range(3):
    ...     print (x)
    ...
    a la console et regarder ce que ça fait.

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

  14. #14
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    merci pour les explications

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

Discussions similaires

  1. [OpenGL 1.x] Déplacement d'une sphère à l'aide d'une matrice
    Par royalxm dans le forum OpenGL
    Réponses: 3
    Dernier message: 25/03/2014, 12h10
  2. aide pour une matrice
    Par anoir19 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 05/07/2012, 08h58
  3. Réponses: 0
    Dernier message: 09/03/2012, 19h38
  4. [E-07] aide pour une matrice des distances
    Par pheron dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/11/2008, 23h24
  5. (debutante ) aide sur une matrice ! svp
    Par sicile dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 07/06/2007, 18h32

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