Générer liste automatiquement
Résolu
Zak
-
jee pee Messages postés 31867 Date d'inscription Statut Modérateur Dernière intervention -
jee pee Messages postés 31867 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Est-ce possible de générer cette liste de tuple automatiquement avec une boucle for?
coordVoisins = [
[liCoord1 - 1, coCoord1 - 1],
[liCoord1 - 1, coCoord1],
[liCoord1 - 1, coCoord1 + 1],
[liCoord1, coCoord1 - 1],
[liCoord1, coCoord1],
[liCoord1, coCoord1 + 1],
[liCoord1 + 1, coCoord1 - 1],
[liCoord1 + 1, coCoord1],
[liCoord1 + 1, coCoord1 + 1]
]
Est-ce possible de générer cette liste de tuple automatiquement avec une boucle for?
coordVoisins = [
[liCoord1 - 1, coCoord1 - 1],
[liCoord1 - 1, coCoord1],
[liCoord1 - 1, coCoord1 + 1],
[liCoord1, coCoord1 - 1],
[liCoord1, coCoord1],
[liCoord1, coCoord1 + 1],
[liCoord1 + 1, coCoord1 - 1],
[liCoord1 + 1, coCoord1],
[liCoord1 + 1, coCoord1 + 1]
]
Configuration: Windows / Chrome 96.0.4664.110
2 réponses
-
Bonjour,
On peut faire :coordVoisins =[] for x in range(-1,2): for y in range(-1,2): coordVoisins.append([liCoord1 + x,coCoord1 +y ])
Je pense qu'on doit pouvoir utiliser range() dans une syntaxe avec une seule boucle comme :for (x,y) in ((-1,1),(0,-1)): coordVoisins.append([liCoord1 + x,coCoord1 +y ])
mais je ne trouve pas la syntaxe adéquate.
Et avec cette même syntaxe on pourrait faire :coordVoisins = [[liCoord1 +x,coCoord1 +y] for x,y in ((-1,1),(1,0)) ]
Ou peut être utiliser un bibliothèque pour les matrices comme numpy ?
-
on peut faire
coordVoisins = [[liCoord1 +x,coCoord1 +y] for x in range(-1,2) for y in range(-1,2)]
mais ce n'est pas une syntaxe très naturelle.