Générer liste automatiquement

Résolu
Zak -  
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]
]

Configuration: Windows / Chrome 96.0.4664.110

2 réponses

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