Générer liste automatiquement

Résolu/Fermé
Zak - 6 janv. 2022 à 12:32
jee pee Messages postés 39759 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 22 mai 2024 - 6 janv. 2022 à 14:16
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 39759 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 22 mai 2024 9 193
Modifié le 6 janv. 2022 à 13:54
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 39759 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 22 mai 2024 9 193
6 janv. 2022 à 14:16
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