Dados dos números r1 y r2 (que define el rango), escriba un programa Python para crear una lista con el rango dado (inclusive).
Ejemplos:
Input : r1 = -1, r2 = 1 Output : [-1, 0, 1] Input : r1 = 5, r2 = 9 Output : [5, 6, 7, 8, 9]>
Analicemos algunos enfoques para Crear una lista de números con un rango determinado en Pitón .
Enfoque ingenuo usando un bucle
Un método ingenuo para crear un lista dentro de un rango dado es crear primero una lista vacía y agregar el sucesor de cada número entero en cada iteración de for bucle .
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))> |
>
>
Producción:
[-1, 0, 1]>
Usando la comprensión de listas
También podemos usar comprensión de la lista con el propósito. Simplemente itere 'elemento' en un bucle for desde r1 a r2 y devolver todos los 'elementos' como lista. Este será un código simple de una sola línea.
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))> |
>
>
Producción:
[-1, 0, 1]>
Usando el rango de Python()
Python viene con una función directa range() que crea una secuencia de números desde el principio hasta el final e imprime cada elemento de la secuencia. Usamos rango() con r1 y r2 y luego convertir la secuencia en lista.
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))> |
>
>
puntero de desreferencia c
Producción:
[-1, 0, 1]>
Usando itertools:
También puede utilizar la función de rango en combinación con la función de cadena del módulo itertools para crear una lista de números con un rango determinado. Esto puede hacerse de la siguiente manera:
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> |
>
>Producción
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]>
Esto creará una lista de números de r1 a r2 inclusive encadenando los elementos del rango usando la función de cadena del módulo itertools.
Usando numpy.arange()
Pitón numpy.arange() devuelve una lista con elementos espaciados uniformemente según el intervalo. Aquí configuramos el intervalo como 1 según nuestra necesidad de obtener el resultado deseado.
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))> |
>
>
Producción:
[-1, 0, 1]>
Usando numpy para crear una lista de números con un rango dado
Aquí estamos creando una lista de números de un rango determinado con el incremento definido.
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> ))> |
>
>
Producción:
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]>
Usando recursividad
Otro método para crear una lista de números dentro de un rango determinado es utilizar la recursividad. Esto implica definir una función recursiva que toma el rango actual y la lista que se devolverá, y luego agregar el rango actual a la lista y llamar a la función nuevamente con el siguiente rango hasta alcanzar el final del rango.
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> |
>
>Producción
[5, 6, 7, 8, 9] [-1, 0, 1]>
Este enfoque tiene una complejidad temporal de O(n) y un espacio auxiliar de O(n), donde n es el número de elementos de la lista.
Método 5: uso de map() y la función lambda
En este enfoque, usamos map() y una función lambda para generar una lista de números dentro del rango dado. map() aplica la función lambda a cada elemento de la secuencia y devuelve un objeto de mapa. Convertimos el objeto del mapa en una lista y lo devolvemos.
Algoritmo
Utilice map() y una función lambda para generar una lista de números dentro del rango dado.
Convierta el objeto del mapa en una lista y devuélvalo.
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]> |
>
>
capas del modelo osiProducción
[5, 6, 7, 8, 9] [-1, 0, 1]>
Complejidad del tiempo: O(r2-r1) donde r1 y r2 son el rango dado.
Complejidad espacial: O(r2-r1) donde r1 y r2 son el rango dado.