logo

Python | Créer une liste de nombres avec une plage donnée

Étant donné deux nombres r1 et r2 (qui définit la plage), écrivez un programme Python pour créer une liste avec la plage donnée (incluse).

Exemples:



 Input : r1 = -1, r2 = 1 Output : [-1, 0, 1] Input : r1 = 5, r2 = 9 Output : [5, 6, 7, 8, 9]>

Discutons de quelques approches pour Création d'une liste de nombres avec une plage donnée dans Python .

Approche naïve utilisant une boucle

Une méthode naïve pour créer un liste dans une plage donnée consiste à créer d’abord une liste vide et à ajouter le successeur de chaque entier à chaque itération de for boucle .

Python3








# Python3 Program to Create list> # with integers within given range> def> createList(r1, r2):> ># Testing if range r1 and r2> ># are equal> >if> (r1>=>=> r2):> >return> r1> >else>:> ># Create empty list> >res>=> []> ># loop to append successors to> ># list until r2 is reached.> >while>(r1 +1 ): res.append(r1) r1 += 1 return res # Driver Code r1, r2 = -1, 1 print(createList(r1, r2))>

>

>

Sortir:

[-1, 0, 1]>

Utiliser la compréhension de liste

Nous pouvons également utiliser compréhension de liste aux fins. Il suffit de parcourir « élément » dans une boucle for à partir de r1 à r2 et renvoie tous les « éléments » sous forme de liste. Ce sera un simple code d’une seule ligne.

Python3




# Python3 Program to Create list> # with integers within given range> def> createList(r1, r2):> >return> [item>for> item>in> range>(r1, r2>+>1>)]> > # Driver Code> r1, r2>=> ->1>,>1> print>(createList(r1, r2))>

>

>

Sortir:

[-1, 0, 1]>

Utilisation de la plage Python()

Python est livré avec une fonction directe range() qui crée une séquence de nombres du début à la fin et imprime chaque élément de la séquence. Nous utilisons gamme() avec r1 et r2 puis convertissez la séquence en liste.

Python3




# Python3 Program to Create list> # with integers within given range> def> createList(r1, r2):> >return> list>(>range>(r1, r2>+>1>))> > # Driver Code> r1, r2>=> ->1>,>1> print>(createList(r1, r2))>

>

>

abstraction en java

Sortir:

[-1, 0, 1]>

Utilisation d'itertools :

Vous pouvez également utiliser la fonction range en combinaison avec la fonction chaîne du module itertools pour créer une liste de nombres avec une plage donnée. Cela peut être fait comme suit:

Python3




# Python3 Program to Create list> # with integers within given range> import> itertools> r1>=>->5> r2>=>5> #using the chain function from the itertools module> numbers>=> list>(itertools.chain(>range>(r1, r2>+>1>)))> print>(numbers)> #This code is contributed by Edula Vinay Kumar Reddy>

>

>

Sortir

[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]>

Cela créera une liste de nombres de r1 à r2 inclus en chaînant les éléments de la plage ensemble à l'aide de la fonction de chaîne du module itertools.

Utiliser numpy.arange()

Python numpy.arange() renvoie une liste avec des éléments régulièrement espacés selon l'intervalle. Ici, nous définissons l'intervalle sur 1 en fonction de notre besoin pour obtenir le résultat souhaité.

Python3




# Python3 Program to Create list> # with integers within given range> import> numpy as np> def> createList(r1, r2):> >return> np.arange(r1, r2>+>1>,>1>)> > # Driver Code> r1, r2>=> ->1>,>1> print>(createList(r1, r2))>

>

>

Sortir:

[-1, 0, 1]>

Utiliser numpy pour créer une liste de nombres avec une plage donnée

Ici, nous créons une liste de nombres d'une plage donnée avec l'incrément défini.

Python3




import> numpy as np> def> fun(start, end, step):> >num>=> np.linspace(start, end,(end>->start)> >*>int>(>1>/>step)>+>1>).tolist()> >return> [>round>(i,>2>)>for> i>in> num]> > print>(fun(>1>,>5>,>0.5>))>

>

>

Sortir:

[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]>

Utiliser la récursivité

Une autre approche pour créer une liste de nombres dans une plage donnée consiste à utiliser la récursivité. Cela implique de définir une fonction récursive qui prend en compte la plage actuelle et la liste à renvoyer, puis d'ajouter la plage actuelle à la liste et d'appeler à nouveau la fonction avec la plage suivante jusqu'à ce que la fin de la plage soit atteinte.

Python3




def> create_list(r1, r2, lst):> ># Base case: if r1 is equal to r2, return the list> >if> r1>=>=> r2>+>1>:> >return> lst> ># Otherwise, append r1 to the list and call the function again with r1 + 1> >else>:> >lst.append(r1)> >return> create_list(r1>+> 1>, r2, lst)> # Test the function> print>(create_list(>5>,>9>, []))># [5, 6, 7, 8, 9]> print>(create_list(>->1>,>1>, []))># [-1, 0, 1]> #This code is contributed by Edula Vinay Kumar Reddy>

chaîne java

>

>

Sortir

[5, 6, 7, 8, 9] [-1, 0, 1]>

Cette approche a une complexité temporelle de O(n) et un espace auxiliaire de O(n), où n est le nombre d'éléments dans la liste.

Approche 5 : Utilisation de map() et de la fonction lambda

Dans cette approche, nous utilisons map() et une fonction lambda pour générer une liste de nombres dans la plage donnée. map() applique la fonction lambda à chaque élément de la séquence et renvoie un objet map. Nous convertissons l'objet cartographique en liste et le renvoyons.

Algorithme

Utilisez map() et une fonction lambda pour générer une liste de nombres dans la plage donnée.
Convertissez l'objet cartographique en liste et renvoyez-le.

Python3




def> create_list(r1, r2):> >return> list>(>map>(>lambda> x: x,>range>(r1, r2>+>1>)))> # Test the function> print>(create_list(>5>,>9>))># [5, 6, 7, 8, 9]> print>(create_list(>->1>,>1>))># [-1, 0, 1]>

>

>

Sortir

[5, 6, 7, 8, 9] [-1, 0, 1]>

Complexité temporelle : O(r2-r1) où r1 et r2 sont la plage donnée.
Complexité spatiale : O(r2-r1) où r1 et r2 sont la plage donnée.