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 :

Matrice , colonnes , lignes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Matrice , colonnes , lignes
    Bonjour,

    Je me suis jamais sentie aussi bête de ma vie , et tout çà à cause d'une 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 .

    Ma réponse est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> def matrice(x,y) :
    	Z = []
    	M = [1,2,3],[4,5,6]
    	for x in range(2) : Z += [M]
    	for y in range(3) : Z += [M]
    	return 3*x + y + 1
     
    >>> matrice(1, 3)              # c'est complétement faux , la matrice a comme une sous-liste .
    6
    >>> matrice(2, 5)
    6
    >>> matrice(1, 0)
    >>> M[0]
    [1, 2, 3] # le seul truc qui est juste

    Bon , j'ai lu quelques que quand on a 2 lignes et 3 colonnes chacune , l'expression mathématique est 3*x + y + 1 , logique puisque qu'on doit sauter de 3 lignes , plus 1 colonne , et le ' + 1 ' correspond à la position de la nouvelle liste (enfin c'est que je crois comprendre )

    Mais une chose me dit qu'en fait je ne comprends pas une matrice et son sens : liste de profondeur 2 et dimensions d'une matrice M sont respectivement len(M) et len(M[0]).

    Quoi çà veut dire qu'on itère ou que l'on cherche un élément par index ?
    Mais si on veut genre accéder à la ligne 3 et colonne 5 ?Cela correspondrait à quoi par écriture ? Est-ce que c'est possible ?
    Est-ce que je dois vraiment définir une fonction matrice ?

    Dsl mais cet exo me rends

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Par défaut
    Bonjour,

    une matrice peut être vue comme une liste de liste
    une liste est un ensemble de valeurs disons numériques dans le cas de calculs mathématiques.

    la liste de liste dont je parle est en fait une matrice à deux dimensions seulement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    liste = [1,2,3] # matrice à une dimension
    matrice = [liste, liste, liste] # matrice à deux dimensions
    # en vue éclatée ca donne : 
    matrice = [
     [1,2,3],
     [1,2,3],
     [1,2,3]
    ]
    il est possible d'accéder à tous les éléments d'une liste. Et comme la matrice que je présente est une liste de liste, on peut accéder à tous les éléments
    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
     
    liste = [1, 2, 3]
    ---------------^
    # on accede a la position 1 de la liste
    liste[1] # la valeur est 2
     
    dans une matrice
    matrice = [
     [1,2,3],
     [4,5,6],
     [7,8,9] #*on veut la valeur 7 de cette liste
    ]
     
    #on peut accéder à la sous liste 2 de la matrice comme cela
    sousliste = matrice[2] # on obtient : [7,8,9]
     
    # on accede ensuite à la valeur souhaitée
    mavaleur = sousliste[0] # on a la valeur 7
     
    #en plus court ca donne : 
    matrice[2][0] # on a directement la valeur 7
    mais au fond, je pense que l'ennoncé de l'execice n'es pas présenté clairement. donc je ne peux rien faire de plus

  3. #3
    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
    Merci beaucoup
    Donc en fait pour coder une fonction col2() afin d'extraire tous les éléments d'index 2 , et de la géneraliser pour n'importe quelle colonne d'une matrice de n lignes par m colonnes : c'est un peu comme tu as fait pour trouver les index .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    M = [[1,2,3],[4,5,6]]
    M[0][2] + M[1][2]
    Mais comment exprimer une matrice pour n lignes par m colonnes ?
    Déjà le 'par' , son sens , çà voudrait dire une multiplication ?
    Le x et y ont un lien étroit , j'ai jamais été bonne avec les équations

    Au fait , le prof a dit qu'on pouvait zapper le Z = [] , d'ailleurs je vois pas à quoi cela sert de mettre qu'une liste est vide (je sais çà contient rien)

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    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 049
    Par défaut
    Je ne sais pas si j'ai bien compris, mais ça ne serait pas quelquechose de ce genre que tu cherches?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> mat = ([12, 5, 9], [4, 6, 2])
    >>> for line in mat:
    ...     x, y, z = line
    ...     print("{0}x + {1}y = {2}".format(x, y, z))
    ... 
    12x + 5y = 9
    4x + 6y = 2

  5. #5
    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
    Merci pour ta recherche mais il y'a une soucis
    Le seul indice du prof ,c'est la forme 3*x + y + 1 , je sais que ta méthode est simple et efficace , mais je pense que l'objectif est de trouver une liste .Cet exo a rendu dingue tout le monde .Le problème de cette matrice est qu'elle a une sous-liste.
    Mais j'ai trouvé comme piste , la méthode append () et print , d'ailleurs en fait , j'ai remarqué que le soucis réside :
    _ les index commencent à 0 .
    _ mais dans la matrice M = [[1, 2, 3], [4, 5, 6]] , on remarque qu'on saute tout le temps de 1 , mais les colonnes commencent aussi à zéro ?

    Voilà mes codes obtenus : attention à la longueur

    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
    >>> def matrice(n, m):
    	M = [[1, 2, 3], [4, 5, 6]]
    	for x in range(n) :
    		M.append([])
    		for y in range(1, m*n+1) :
    			M.append(y)
    			print M
     
     
    >>> matrice(2, 3)
    [[1, 2, 3], [4, 5, 6], [], 1]
    [[1, 2, 3], [4, 5, 6], [], 1, 2]
    [[1, 2, 3], [4, 5, 6], [], 1, 2, 3]
    [[1, 2, 3], [4, 5, 6], [], 1, 2, 3, 4]
    [[1, 2, 3], [4, 5, 6], [], 1, 2, 3, 4, 5]
    [[1, 2, 3], [4, 5, 6], [], 1, 2, 3, 4, 5, 6]
    [[1, 2, 3], [4, 5, 6], [], 1, 2, 3, 4, 5, 6, [], 1]
    [[1, 2, 3], [4, 5, 6], [], 1, 2, 3, 4, 5, 6, [], 1, 2]
    [[1, 2, 3], [4, 5, 6], [], 1, 2, 3, 4, 5, 6, [], 1, 2, 3]
    [[1, 2, 3], [4, 5, 6], [], 1, 2, 3, 4, 5, 6, [], 1, 2, 3, 4]
    [[1, 2, 3], [4, 5, 6], [], 1, 2, 3, 4, 5, 6, [], 1, 2, 3, 4, 5]
    [[1, 2, 3], [4, 5, 6], [], 1, 2, 3, 4, 5, 6, [], 1, 2, 3, 4, 5, 6]
    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
    >>> def matrice(n, m):
    	M = [[1, 2, 3], [4, 5, 6]]
    	for n in range(1, 4) :
    		M.append([+1])
    		for m in range(1, m*n+1) :
    			M.append(+1)
    			print M
     
     
    >>> matrice(1, 2)
    [[1, 2, 3], [4, 5, 6], [1], 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1, 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1, 1, 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1, 1, 1, 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1, 1, 1, 1, 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1, 1, 1, 1, 1, 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
    [[1, 2, 3], [4, 5, 6], [1], 1, 1, [1], 1, 1, 1, 1, [1], 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
    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
    34
    35
    36
    37
    38
    39
    >>> def matrice(n, m):
    	M = [1, 2, 3], [4, 5, 6]
    	for n in range(1, 6) :
    		print 3*n + 1
    		for m in range(1, 6) :
    			print m + 1
     
     
    >>> matrice(1, 2)
    4
    2
    3
    4
    5
    6
    7
    2
    3
    4
    5
    6
    10
    2
    3
    4
    5
    6
    13
    2
    3
    4
    5
    6
    16
    2
    3
    4
    5
    6
    Et là , j'ai utilisé ton code :


    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
     
    >>> mat = ([1, 2, 3], [4, 5, 6])
    >>> for line in mat:
    	x, y, z = line
    	print("{0}x + {1}y = {2}".format(x, y, z))
     
     
    1x + 2y = 3
    4x + 5y = 6
    >>> def matrice(x, y) :
    	mat = [[1, 2, 3], [4, 5, 6]]
    	for line in mat:
    		x, y, z = line
    		print("{0}x + {1}y = {2}".format(x, y, z))
     
     
    >>> matrice(1, 2)
    1x + 2y = 3
    4x + 5y = 6
    >>> matrice(1, 3)
    1x + 2y = 3
    4x + 5y = 6
    >>> matrice(2, 3)
    1x + 2y = 3
    4x + 5y = 6


    Et là aussi je bloque ( PS : c'est toujours la réflexion sur cet exo )

    par exemple tu mets range(1,4) cela te retournera toujours (à chaque boucle) [1,2,3]

    par contre si tu mets:

    for x in range(1,4):

    print x+1

    dans la boucle x=1 donc print retourne 2

    puis x=2 donc print retourne 3

    puis x=3 donc print retourne 4

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    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 049
    Par défaut
    Tu écris ceci

    Citation Envoyé par Kurodiam
    il faut créer une expression pour n'importe quelle matrice de n lignes par m colonnes
    Pour 1 ligne et 3 colonnes, je t'ai donné mon exemple, il faut adapter à ton cas qui est 1 ligne et 4 colonnes.

    Ma proposition était donc de la forme x + y = z
    Ta recherche est x + y + z = n où on ne prend pas en compte le n, et sans signe =

    J'ai placé ma matrice sous la forme d'un tuple de listes, mais c'est dans ton cas équivalent à une liste de listes.

    Si j'adapte mon code à ce que tu veux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> mat = ([1, 2, 3], [4, 5, 6]) 
    >>> for line in mat:     
    ...    x, y, z = line     
    ...    print("{0}x + {1}y + {2}".format(x, y, z))
    Maintenant tu auras le problème des signes à gérer...

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

Discussions similaires

  1. Transformer une matrice colonne en matrice ligne
    Par Leanaa dans le forum Bibliothèques tierces
    Réponses: 19
    Dernier message: 05/07/2012, 17h11
  2. connecter deux colonnes lignes par ligne
    Par ApolloCrid dans le forum Excel
    Réponses: 3
    Dernier message: 01/10/2007, 20h27
  3. [TListView] Detection Click droit colonne / Ligne
    Par BATiViR dans le forum Delphi
    Réponses: 5
    Dernier message: 13/06/2007, 08h49
  4. Réponses: 4
    Dernier message: 06/05/2007, 12h57
  5. Réponses: 6
    Dernier message: 07/02/2007, 15h03

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