Générer liste automatiquement

Résolu
Zak -  
jee pee Messages postés 41519 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]
]


Configuration: Windows / Chrome 96.0.4664.110
A voir également:

2 réponses

jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
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 ?


1
jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
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.
1