[Python] Matrice à partir d'un dictionnaire
Fermé
Angharad
-
23 déc. 2011 à 13:27
UbuntuPR Messages postés 89 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 1 août 2013 - 29 déc. 2011 à 01:06
UbuntuPR Messages postés 89 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 1 août 2013 - 29 déc. 2011 à 01:06
A voir également:
- [Python] Matrice à partir d'un dictionnaire
- Télécharger dictionnaire larousse pdf gratuit - Télécharger - Dictionnaires & Langues
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Télécharger dictionnaire français gratuit pdf - Télécharger - Bureautique
- Trouver un nom à partir d'une adresse ✓ - Forum Loisirs / Divertissements
- Chaque fichier en ligne sur le web a un chemin d’accès sur un serveur. c’est le cas du fichier du logo présent sur la page de cette ville. quel est le chemin de ce fichier à partir de la racine du site ? - Forum Graphisme
3 réponses
UbuntuPR
Messages postés
89
Date d'inscription
mercredi 22 juin 2011
Statut
Membre
Dernière intervention
1 août 2013
10
25 déc. 2011 à 22:20
25 déc. 2011 à 22:20
def creerMatrice(lignes,colonnes) : assert type(lignes) is int assert type(colonnes) is int matrice = {} for i in range(lignes) : indiceLigne = i + 1 for j in range(colonnes) : indiceColonne = j + 1 indiceColonne = str(indiceColonne) indiceLigne = str(indiceLigne) matrice[indiceLigne+indiceColonne] = '' return matrice def remplirMatrice(lignes,colonnes,composantes) : assert type(lignes) is int assert type(colonnes) is int assert type(composantes) is list matrice = {} for i in range(lignes) : indiceLigne = i + 1 for j in range(colonnes) : indiceColonne = j + 1 indiceColonne = str(indiceColonne) indiceLigne = str(indiceLigne) matrice[indiceLigne+indiceColonne] = composantes[j][i] return matrice
Bonsoir,
Il y a ci-dessus deux fonctions similaires, la première, créer un dictionnaire avec des clés qui représentent où nous sommes dans la matrice (ex : 21 = 2eme ligne 1ere colonne), mais les items sont vides.
La seconde, elle, remplit les items. En gros tu n'as besoins que de la deuxième fonction pour remplir ta matrice.
Il faut juste comprendre que les composantes de matrices sont à rentrer dans la fonction remplirMatrice de la manière suivante :
>>> remplirMatrice(3,2,[[1,2,3],[2,3,4]]) {'11': 1, '12': 2, '21': 2, '22': 3, '32': 4, '31': 3}
Tes composantes sont à entrer dans une liste de liste, ou chaque liste représente une colonne. Avec l'exemple ci-dessus ta matrice serait :
1 2
2 3
3 4
La fonction peut te paraître complexe, mais une fois créée il devient simple de créer un dico représentant une matrice.
Si tu as des questions sur le code n'hésites pas à demander.
En espérant t'avoir aidé.
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
130
27 déc. 2011 à 18:18
27 déc. 2011 à 18:18
salut,
la première fonction peut s'écrire plus simplement:
notez que str(i)+str(j) peut aussi s'obtenir par '%d%d' % (i,j)
Voir
https://docs.python.org/3/library/stdtypes.html#index-635
On peut aussi utiliser la fonction dict() pour créer le dictionnaire représentant la matrice:
Il y a quand même un hic avec cette fonction et cette représentation par un dictionnaire avec ces clés:
pour une matrice 20 x 20 , la case ligne=11,colonne=3 aura la même clé '113' que le case ligne=1,colonne=13
Il faut garder distincts les indices de la ligne et de la colonne. Pour cela utiliser un doublet (c'est à dire un tuple à deux éléments):
la première fonction peut s'écrire plus simplement:
def creerMatrice(lignes,colonnes) : assert type(lignes) is int assert type(colonnes) is int matrice = {} for i in range(1,lignes+1) : for j in range(1,colonnes+1) : matrice[str(i)+str(j)] = '' return matrice
notez que str(i)+str(j) peut aussi s'obtenir par '%d%d' % (i,j)
Voir
https://docs.python.org/3/library/stdtypes.html#index-635
On peut aussi utiliser la fonction dict() pour créer le dictionnaire représentant la matrice:
def creerMatrice(lignes,colonnes) : assert type(lignes) is int assert type(colonnes) is int return dict( ('%d%d' % (i,j) , '') for i in range(1,lignes+1) for j in range(1,colonnes+1))
Il y a quand même un hic avec cette fonction et cette représentation par un dictionnaire avec ces clés:
pour une matrice 20 x 20 , la case ligne=11,colonne=3 aura la même clé '113' que le case ligne=1,colonne=13
Il faut garder distincts les indices de la ligne et de la colonne. Pour cela utiliser un doublet (c'est à dire un tuple à deux éléments):
def creerMatrice(lignes,colonnes) : assert type(lignes) is int assert type(colonnes) is int return dict( ((i,j) , '') for i in range(1,lignes+1) for j in range(1,colonnes+1))
UbuntuPR
Messages postés
89
Date d'inscription
mercredi 22 juin 2011
Statut
Membre
Dernière intervention
1 août 2013
10
29 déc. 2011 à 01:06
29 déc. 2011 à 01:06
Bien vu pour la matrice 20*20, j'oublie svt l'utilisation de la fonction dict().