Donats dos nombres r1 i r2 (que defineix l'interval), escriviu un programa Python per crear una llista amb l'interval donat (inclòs).
Exemples:
Input : r1 = -1, r2 = 1 Output : [-1, 0, 1] Input : r1 = 5, r2 = 9 Output : [5, 6, 7, 8, 9]>
Parlem d'alguns enfocaments Creació d'una llista de nombres amb un rang determinat Python .
Enfocament ingenu mitjançant un bucle
Un mètode ingenu per crear un llista dins d'un interval determinat és crear primer una llista buida i afegir el successor de cada enter en cada iteració de for bucle .
Python 3
# 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))> |
>
>
Sortida:
[-1, 0, 1]>
Ús de la comprensió de llista
També podem utilitzar comprensió de llista amb el propòsit. Només heu de repetir 'element' en un bucle for r1 a r2 i torneu tots els 'elements' com a llista. Aquest serà un codi de línia senzill.
Python 3
# 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))> |
>
>
Sortida:
[-1, 0, 1]>
Ús de Python range()
Python inclou una funció directa range() que crea una seqüència de nombres des de l'inici fins a la parada i imprimeix cada element de la seqüència. Fem servir rang () amb r1 i r2 i després convertir la seqüència en llista.
Python 3
# 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))> |
>
>
fmovies Índia
Sortida:
[-1, 0, 1]>
Utilitzant itertools:
També podeu utilitzar la funció d'interval en combinació amb la funció de cadena del mòdul itertools per crear una llista de números amb un interval determinat. Això es pot fer de la següent manera:
Python 3
# 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> |
>
>Sortida
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]>
Això crearà una llista de nombres de r1 a r2 inclosos encadenant els elements del rang mitjançant la funció de cadena del mòdul itertools.
Utilitzant numpy.arange()
Python numpy.arange() retorna una llista amb elements uniformement espaiats segons l'interval. Aquí establim l'interval com a 1 segons la nostra necessitat d'obtenir la sortida desitjada.
Python 3
# 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))> |
>
>
Sortida:
[-1, 0, 1]>
Utilitzant numpy per crear una llista de números amb un rang determinat
Aquí estem creant una llista de números d'un rang determinat amb l'increment definit.
Python 3
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> ))> |
>
>
Sortida:
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]>
Ús de la recursència
Un altre enfocament per crear una llista de nombres dins d'un rang determinat és utilitzar la recursivitat. Això implica definir una funció recursiva que inclou l'interval actual i la llista a retornar, i després afegir l'interval actual a la llista i tornar a cridar la funció amb l'interval següent fins que s'arribi al final de l'interval.
Python 3
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> |
mètodes abstractes
>
>Sortida
[5, 6, 7, 8, 9] [-1, 0, 1]>
Aquest enfocament té una complexitat temporal de O(n) i un espai auxiliar de O(n), on n és el nombre d'elements de la llista.
Enfocament 5: Ús de map() i la funció lambda
En aquest enfocament, fem servir map() i una funció lambda per generar una llista de nombres dins de l'interval donat. map() aplica la funció lambda a cada element de la seqüència i retorna un objecte de mapa. Convertim l'objecte del mapa en una llista i el retornem.
Algoritme
Utilitzeu map() i una funció lambda per generar una llista de números dins de l'interval donat.
Converteix l'objecte del mapa en una llista i torna-la.
Python 3
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]> |
>
>Sortida
[5, 6, 7, 8, 9] [-1, 0, 1]>
Complexitat temporal: O(r2-r1) on r1 i r2 són l'interval donat.
Complexitat espacial: O(r2-r1) on r1 i r2 són l'interval donat.