2 votes

Comment créez-vous un ensemble télescopique de termes en python ?

Je suis en train d'essayer d'animer une ligne se déplaçant à travers un labyrinthe et je me demandais s'il y avait un moyen de créer facilement une liste télescopique.

Par exemple, bfs(grid) retourne une liste de paires de coordonnées, par exemple

[(0,1),(0,2),(0,3)....]

et je me demandais s'il y avait un moyen de prendre cette liste et de retourner

[[(0,1)] , [(0,1), (0,2)] , [(0,1) , (0,2), (0,3)]]

2voto

Mark Meyer Points 31911

Avec les versions récentes (> 3.8) de Python, vous pouvez utiliser l’opérateur walrus pour cela :

l = [(0,1),(0,2),(0,3)]
x = []

[x := x + [t] for t in l]
# [[(0, 1)], [(0, 1), (0, 2)], [(0, 1), (0, 2), (0, 3)]]

1voto

BrokenBenchmark Points 1099

Vous pouvez utiliser la découpe de liste avec une compréhension de liste :

[lst[:idx + 1] for idx in range(len(lst))]

Cela produit :

[[(0, 1)], [(0, 1), (0, 2)], [(0, 1), (0, 2), (0, 3)]]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X