logo

Python | Creați o listă de numere cu un interval dat

Date două numere r1 și r2 (care definește intervalul), scrieți un program Python pentru a crea o listă cu intervalul dat (inclusiv).

Exemple:



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

Să discutăm câteva abordări ale Crearea unei liste de numere cu un interval dat în Piton .

Abordare naivă folosind o buclă

O metodă naivă de a crea un listă într-un interval dat este să creați mai întâi o listă goală și să adăugați succesorul fiecărui număr întreg în fiecare iterație de pentru buclă .

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

>

>

Ieșire:

[-1, 0, 1]>

Utilizarea listei de înțelegere

Putem folosi, de asemenea înțelegerea listei pentru scopul. Doar repetați „articolul” într-o buclă for de la r1 la r2 și returnați toate „articolele” ca listă. Acesta va fi un simplu cod de linie.

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

>

>

Ieșire:

[-1, 0, 1]>

Folosind gama Python()

Python vine cu o funcție directă range() care creează o secvență de numere de la valorile de la început până la oprire și imprimă fiecare element din secvență. Folosim gamă() cu r1 și r2 și apoi convertiți secvența în 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))>

>

>

len of array în java

Ieșire:

[-1, 0, 1]>

Folosind iertools:

De asemenea, puteți utiliza funcția de interval în combinație cu funcția de lanț a modulului itertools pentru a crea o listă de numere cu un interval dat. Acest lucru se poate face după cum urmează:

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>

>

>

Ieșire

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

Aceasta va crea o listă de numere de la r1 la r2 inclusiv prin înlănțuirea elementelor din interval folosind funcția de lanț din modulul itertools.

Folosind numpy.arange()

Piton numpy.arange() returnează o listă cu elemente uniform distanțate conform intervalului. Aici setăm intervalul ca 1 în funcție de nevoia noastră de a obține rezultatul dorit.

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

>

>

Ieșire:

[-1, 0, 1]>

Folosind numpy pentru a crea o listă de numere cu un interval dat

Aici creăm o listă de numere dintr-un interval dat cu incrementul definit.

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

>

>

Ieșire:

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

Utilizarea recursiunii

O altă abordare pentru a crea o listă de numere într-un interval dat este utilizarea recursiunii. Aceasta implică definirea unei funcții recursive care preia intervalul curent și lista care urmează să fie returnată, apoi adăugarea intervalului curent la listă și apelarea din nou a funcției cu intervalul următor până când se ajunge la sfârșitul intervalului.

compara șiruri de caractere java

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>

>

>

Ieșire

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

Această abordare are o complexitate de timp de O(n) și un spațiu auxiliar de O(n), unde n este numărul de elemente din listă.

Abordarea 5: Utilizarea map() și funcția lambda

În această abordare, folosim map() și o funcție lambda pentru a genera o listă de numere în intervalul dat. map() aplică funcția lambda fiecărui element din secvență și returnează un obiect map. Convertim obiectul hartă într-o listă și îl returnăm.

Algoritm

Utilizați map() și o funcție lambda pentru a genera o listă de numere în intervalul dat.
Convertiți obiectul hărții într-o listă și returnați-l.

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

>

>

Ieșire

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

Complexitatea timpului: O(r2-r1) unde r1 și r2 sunt intervalul dat.
Complexitatea spațiului: O(r2-r1) unde r1 și r2 sunt intervalul dat.