logo

Pitone | Crea un elenco di numeri con l'intervallo specificato

Dati due numeri r1 E r2 (che definisce l'intervallo), scrivere un programma Python per creare un elenco con l'intervallo specificato (incluso).

Esempi:

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

Discutiamo alcuni approcci a Creazione di un elenco di numeri con un determinato intervallo in Pitone .



Approccio ingenuo utilizzando un loop

Un metodo ingenuo per creare a elenco all'interno di un dato intervallo è creare prima un elenco vuoto e aggiungere il successore di ciascun intero in ogni iterazione di for ciclo continuo .

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))>

>

>

Produzione:

[-1, 0, 1]>

Utilizzo della comprensione delle liste

Possiamo anche usare comprensione delle liste allo scopo. Basta ripetere 'elemento' in un ciclo for da r1 A r2 e restituisce tutti gli 'elementi' come elenco. Questo sarà un semplice codice di una riga.

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))>

>

>

Produzione:

[-1, 0, 1]>

Usando l'intervallo Python()

Python viene fornito con una funzione diretta range() che crea una sequenza di numeri dai valori iniziali a quelli finali e stampa ogni elemento nella sequenza. Noi usiamo allineare() con r1 E r2 e poi convertire la sequenza in list.

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))>

>

>

document.queryselector

Produzione:

[-1, 0, 1]>

Utilizzando itertools:

Puoi anche utilizzare la funzione intervallo in combinazione con la funzione catena del modulo itertools per creare un elenco di numeri con un determinato intervallo. Questo può essere fatto come segue:

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>

>

>

Produzione

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

Questo creerà un elenco di numeri da r1 a r2 compreso concatenando insieme gli elementi nell'intervallo utilizzando la funzione chain dal modulo itertools.

Usando numpy.arange()

Pitone numpy.arange() restituisce un elenco con elementi equidistanti secondo l'intervallo. Qui impostiamo l'intervallo su 1 in base alla nostra necessità di ottenere l'output desiderato.

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))>

>

>

Produzione:

[-1, 0, 1]>

Utilizzo di Numpy per creare un elenco di numeri con l'intervallo specificato

Qui stiamo creando un elenco di numeri da un determinato intervallo con l'incremento definito.

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>))>

>

>

Produzione:

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

Utilizzando la ricorsione

Un altro approccio per creare un elenco di numeri all'interno di un determinato intervallo consiste nell'utilizzare la ricorsione. Ciò comporta la definizione di una funzione ricorsiva che accetta l'intervallo corrente e l'elenco da restituire, quindi l'aggiunta dell'intervallo corrente all'elenco e la chiamata di nuovo alla funzione con l'intervallo successivo fino al raggiungimento della fine dell'intervallo.

Python3


funzioni di stringa in Java



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>

>

>

Produzione

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

Questo approccio ha una complessità temporale di O(n) e uno spazio ausiliario di O(n), dove n è il numero di elementi nella lista.

Approccio 5: utilizzo di map() e della funzione lambda

In questo approccio utilizziamo map() e una funzione lambda per generare un elenco di numeri all'interno dell'intervallo specificato. map() applica la funzione lambda a ciascun elemento della sequenza e restituisce un oggetto mappa. Convertiamo l'oggetto mappa in un elenco e lo restituiamo.

Algoritmo

Utilizza map() e una funzione lambda per generare un elenco di numeri all'interno dell'intervallo specificato.
Converti l'oggetto della mappa in un elenco e restituiscilo.

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]>

>

>

Produzione

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

Complessità temporale: O(r2-r1) dove r1 e r2 sono l'intervallo dato.
Complessità spaziale: O(r2-r1) dove r1 e r2 sono l'intervallo dato.