user
Comment créer une liste de longueur n et qui renvoie des 1,2,3 à la suite en Python ?
alphonsio

La solution la plus simple pour répéter une liste est d'utiliser l'opérateur * :

ma_liste = [1, 2, 3]
liste_repetee = ma_liste * 3  # Répète la liste 3 fois
print(liste_repetee)

On peut créer une liste de longueur n qui alterne les nombres 1, 2, 3 en utilisant plusieurs approches :

1. Utiliser l'opérateur *

C'est la méthode la plus simple et efficace.

ma_liste = [1, 2, 3]
liste_repetee = ma_liste * 3  # Répète la liste 3 fois
print(liste_repetee)

Sortie :

[1, 2, 3, 1, 2, 3, 1, 2, 3]

Exemple en ligne :


2. Utiliser une boucle for

Si vous voulez une répétition dynamique :

ma_liste = [1, 2, 3]
n = 3  # Nombre de répétitions
liste_repetee = []
for _ in range(n):
    liste_repetee.extend(ma_liste)
print(liste_repetee)

Sortie :

[1, 2, 3, 1, 2, 3, 1, 2, 3]

Voici l'exemple en ligne :


3. Utiliser une compréhension de liste

Une méthode concise pour les adeptes des compréhensions de liste :

ma_liste = [1, 2, 3]
n = 3
liste_repetee = [elem for _ in range(n) for elem in ma_liste]
print(liste_repetee)

Sortie :

[1, 2, 3, 1, 2, 3, 1, 2, 3]

Cela fonctionne de manière similaire à la boucle for.

Voici l'exemple en ligne :


4. Avec itertools.cycle (solution élégante) :

from itertools import cycle, islice

n = 10
liste = list(islice(cycle([1, 2, 3]), n))
print(liste)

Sortie :

[1, 2, 3, 1, 2, 3, 1, 2, 3]

Cette méthode est efficace et bien adaptée pour une séquence répétitive.


5. Avec itertools.cycle() pour une répétition infinie

Si vous voulez un générateur qui boucle à l'infini :

import itertools

ma_liste = [1, 2, 3]
repetiteur = itertools.cycle(ma_liste)

# Afficher les 10 premières valeurs répétées
for _ in range(10):
    print(next(repetiteur), end=" ")

Sortie :

1 2 3 1 2 3 1 2 3 1

Ici, cycle() génère une liste répétée à l'infini, donc il faut arrêter l'itération manuellement.

Voici l'exemple en ligne :

💡 Quelle méthode choisir ?

  • Utiliser * si vous avez une répétition fixe.
  • Utiliser une boucle for ou une compréhension de liste pour plus de contrôle.
  • Utiliser itertools.cycle() pour une solution élégante ou une répétition infinie.