CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Tableau 2 dimensions incompréhension.

Pseudo supprimé
Pseudo supprimé 19 mai 2022 à 14:46:00

Bonjour, je débute en python voir plus largement en programmation. Aujourd'hui j'ai essayé de faire un tableau 2D pour un casse-brique. Mais je ne comprends pas bien comment fonctionne les listes de liste en python. Voici le code que j'utilise, ca semble fonctionner mais ca me parait pas bon. Quelqu'un a une idée ?

Le code :

grid = []
for l in range(nb_ligne):
colonne = []
for c in range(nb_colonne):
colonne.append(1)
grid.append(colonne)

for l in range(nb_ligne):
for c in range(nb_colonne):
#print("Ligne : {}; Colonne : {}; ce qui se trouve dans ligne[l][c] : {}".format(l, c, grid[l][c])

VeraRubin
VeraRubin
Niveau 8
19 mai 2022 à 15:07:02

Tu saurais republier ton code avec l'indentation stp ? Je suis même pas sûr de comment je dois comprendre ton code sans .. :hap:

Ps : une astuce si tu veux format tes strings plus facilemement, tu peux faire comme ça :d) f"texte random {nom_variable}" :hap:

Pseudo supprimé
Pseudo supprimé 19 mai 2022 à 15:13:43

Le 19 mai 2022 à 15:07:02 :
Tu saurais republier ton code avec l'indentation stp ? Je suis même pas sûr de comment je dois comprendre ton code sans .. :hap:

Ps : une astuce si tu veux format tes strings plus facilemement, tu peux faire comme ça :d) f"texte random {nom_variable}" :hap:

J'avais indenté mais JVC n'a rien voulus savoir :(

grid = [] -> Je créais une liste
for l in range(nb_ligne): -> Je fais un premier for qui parcourt un nombre de ligne
----colonne = [] -> pour chaque ligne je créais une colonne
----for c in range(nb_colonne): -> Je fais un second parcours dans le premier for.
--------colonne.append(1) -> dans chaque colonne je rajoute 1
----grid.append(colonne) -> à la sortie du second for j'introduis le tout dans grid.

for l in range(nb_ligne):
----for c in range(nb_colonne):
-------#print("Ligne : {}; Colonne : {}; ce qui se trouve dans ligne[l][c] : {}".format(l, c, grid[l][c])

Est-ce plus clair ?

Message édité le 19 mai 2022 à 15:15:09 par Pseudo supprimé
Pseudo supprimé
Pseudo supprimé 19 mai 2022 à 15:19:12

Le 19 mai 2022 à 15:13:43 :

Le 19 mai 2022 à 15:07:02 :
Tu saurais republier ton code avec l'indentation stp ? Je suis même pas sûr de comment je dois comprendre ton code sans .. :hap:

Ps : une astuce si tu veux format tes strings plus facilemement, tu peux faire comme ça :d) f"texte random {nom_variable}" :hap:

J'avais indenté mais JVC n'a rien voulus savoir :(

grid = [] -> Je créais une liste
for l in range(nb_ligne): -> Je fais un premier for qui parcourt un nombre de ligne
----colonne = [] -> pour chaque ligne je créais une colonne
----for c in range(nb_colonne): -> Je fais un second parcours dans le premier for.
--------colonne.append(1) -> dans chaque colonne je rajoute 1
----grid.append(colonne) -> à la sortie du second for j'introduis le tout dans grid.

for l in range(nb_ligne):
----for c in range(nb_colonne):
-------#print("Ligne : {}; Colonne : {}; ce qui se trouve dans ligne[l][c] : {}".format(l, c, grid[l][c])

Est-ce plus clair ?

En gros je veux faire ca :

grid = [
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1]
]

Mais en passant par un double for.

lokilok
lokilok
Niveau 16
19 mai 2022 à 15:22:38

Tu as la balise <code></code> pour garder l'indentation de ton code.

Pense juste à la mettre sur un paragraphe séparé (donc ligne vide au-dessus et en-dessous) sinon ça fonctionne pas correctement.

Message édité le 19 mai 2022 à 15:23:25 par lokilok
Azerban
Azerban
Niveau 16
19 mai 2022 à 15:27:45
grid = [[1 for i in range(10)] for o in range(4)]

print(grid)
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
Message édité le 19 mai 2022 à 15:28:17 par Azerban
Pseudo supprimé
Pseudo supprimé 19 mai 2022 à 15:28:22

Le 19 mai 2022 à 15:22:38 :
Tu as la balise <code></code> pour garder l'indentation de ton code.

Pense juste à la mettre sur un paragraphe séparé (donc ligne vide au-dessus et en-dessous) sinon ça fonctionne pas correctement.

Ah d'accord, je ne savais pas. Merci de l'information.


grid = []
for l in range(nb_ligne):
    colonne = []
    for c in range(nb_colonne):
        colonne.append(1)
    grid.append(colonne)
    
for l in range(nb_ligne):
    for c in range(nb_colonne):
        #print("Ligne : {}; Colonne : {}; ce qui se trouve dans ligne[l][c] : {}".format(l, c, grid[l][c]))

J'aurai eu tendance à faire comme l'exemple ci-dessous mais ca ne semble pas fonctionner en python :


grid = []
for l in range(nb_ligne):
    grid[l] = []
    for c in range(nb_colonne):
        grid[l][c] = 1
Message édité le 19 mai 2022 à 15:30:29 par Pseudo supprimé
Pseudo supprimé
Pseudo supprimé 19 mai 2022 à 15:31:49

Le 19 mai 2022 à 15:27:45 :
grid = [[1 for i in range(10)] for o in range(4)] print(grid)

[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

"[[1 for i in range(10)] for o in range(4)]"

Je débute en programmation et notamment en python, cette formulation semble être trop avancé par rapport à mes compétences. Une explication ?

Azerban
Azerban
Niveau 16
19 mai 2022 à 15:36:32

Le 19 mai 2022 à 15:31:49 :

Le 19 mai 2022 à 15:27:45 :
grid = [[1 for i in range(10)] for o in range(4)] print(grid)

[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

"[[1 for i in range(10)] for o in range(4)]"

Je débute en programmation et notamment en python, cette formulation semble être trop avancé par rapport à mes compétences. Une explication ?

>>> [1 for i in range(10)]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

>>> ["toto" for i in range(5)]
['toto', 'toto', 'toto', 'toto', 'toto']

>>> [["python".upper() for i in range(7)] for o in range(4)]
[['PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON'],
 ['PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON'],
 ['PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON'],
 ['PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON']]

Pseudo supprimé
Pseudo supprimé 19 mai 2022 à 17:23:30

Le 19 mai 2022 à 15:36:32 :

Le 19 mai 2022 à 15:31:49 :

Le 19 mai 2022 à 15:27:45 :
grid = [[1 for i in range(10)] for o in range(4)] print(grid)

[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

"[[1 for i in range(10)] for o in range(4)]"

Je débute en programmation et notamment en python, cette formulation semble être trop avancé par rapport à mes compétences. Une explication ?

<code>>>> [1 for i in range(10)]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

["toto" for i in range(5)]

['toto', 'toto', 'toto', 'toto', 'toto']

[["python".upper() for i in range(7)] for o in range(4)]

[['PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON'],
['PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON'],
['PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON'],
['PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON', 'PYTHON']]

</code>

Je ne suis pas encore assez avancé dans python pour comprendre. Toutefois, je vais garder cette exemple de côté pour le jour où je m'y heurterai. Merci.

N'arrivant pas à faire ce que je souhaite, j'ai voulus changé d'idée en utilisant non plus les listes mais les dictionnaires. Et j'ai finalement réussi à faire ce que je cherchais.


grid = {}
for l in range(nb_ligne):
    grid[l] = {}
    for c in range(nb_colonne):
        grid[l][c] = 1

ligne = int(len(grid)) 
for l in range(ligne): # voir explication 1
    colonne = int(len(grid[l]))
    for c in range(colonne): # voir explications 2
        print(f"Ligne : {l}, Colonne : {c}; contenu : {grid[l][c]}") 

Explication 1 : Je pourrais juste mettre nb_ligne, mais je voulais savoir si j'étais capable de connaitre le nombre d'élement dans ce dictionnaire et l'utiliser pour en faire une boucle.
Explication 2 : Même chose que explication 1

Je vous remercie pour vos réponses.

Message édité le 19 mai 2022 à 17:24:12 par Pseudo supprimé
Azerban
Azerban
Niveau 16
19 mai 2022 à 17:38:33

Pour l'affichage vous pouvez faire comme ça (plus simple à comprendre) :

for index_line, line in grid.items():
    for column, value in line.items():
        print(f"Ligne: {index_line}, Colonne: {column}, Value: {value}")
Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment