Podani dve številki r1 in r2 (ki definira obseg), napišite program Python za ustvarjanje seznama z danim obsegom (vključno).
Primeri:
Input : r1 = -1, r2 = 1 Output : [-1, 0, 1] Input : r1 = 5, r2 = 9 Output : [5, 6, 7, 8, 9]>
Pogovorimo se o nekaj pristopih k Ustvarjanje seznama števil z danim obsegom Python .
Naivni pristop z uporabo zanke
Naivna metoda za ustvarjanje a seznam znotraj danega obsega je najprej ustvariti prazen seznam in dodati naslednika vsakega celega števila v vsaki ponovitvi for zanka .
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))> |
>
>
Izhod:
[-1, 0, 1]>
Uporaba razumevanja seznama
Lahko tudi uporabimo razumevanje seznama za namen. Preprosto ponovite 'item' v zanki for iz r1 do r2 in vrne vse 'predmete' kot seznam. To bo preprosta enovrstična koda.
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))> |
>
>
Izhod:
[-1, 0, 1]>
Uporaba Python range()
Python ima neposredno funkcijo range(), ki ustvari zaporedje števil od začetnih do končnih vrednosti in natisne vsak element v zaporedju. Uporabljamo obseg() z r1 in r2 in nato pretvori zaporedje v seznam.
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))> |
>
>
c struktura v strukturi
Izhod:
[-1, 0, 1]>
Uporaba itertools:
Uporabite lahko tudi funkcijo obsega v kombinaciji z verižno funkcijo modula itertools, da ustvarite seznam števil z danim obsegom. To je mogoče storiti na naslednji način:
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> |
>
>Izhod
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]>
To bo ustvarilo seznam števil od r1 do vključno r2 z veriženjem elementov v območju skupaj z uporabo verižne funkcije iz modula itertools.
Uporaba numpy.arange()
Python numpy.arange() vrne seznam z enakomerno razporejenimi elementi glede na interval. Tukaj nastavimo interval na 1 glede na našo potrebo po doseganju želenega rezultata.
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))> |
>
>
Izhod:
tiger v primerjavi z levom
[-1, 0, 1]>
Uporaba numpy za ustvarjanje seznama števil z danim obsegom
Tukaj ustvarjamo seznam števil iz danega obsega z definiranim prirastkom.
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> ))> |
>
>
Izhod:
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]>
Uporaba rekurzije
Drug pristop za ustvarjanje seznama števil znotraj danega obsega je uporaba rekurzije. To vključuje definiranje rekurzivne funkcije, ki prevzame trenutni obseg in seznam, ki ga je treba vrniti, ter nato dodajanje trenutnega obsega na seznam in ponovno klicanje funkcije z naslednjim obsegom, dokler ni dosežen konec obsega.
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> |
>
>Izhod
[5, 6, 7, 8, 9] [-1, 0, 1]>
Ta pristop ima časovno kompleksnost O(n) in pomožni prostor O(n), kjer je n število elementov na seznamu.
Pristop 5: Uporaba map() in funkcije lambda
Pri tem pristopu uporabljamo map() in funkcijo lambda za ustvarjanje seznama števil v danem obsegu. map() uporabi funkcijo lambda za vsak element v zaporedju in vrne objekt zemljevida. Predmet zemljevida pretvorimo v seznam in ga vrnemo.
Algoritem
Uporabite map() in funkcijo lambda, da ustvarite seznam števil v danem obsegu.
Predmet zemljevida pretvorite v seznam in ga vrnite.
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]> |
>
>Izhod
[5, 6, 7, 8, 9] [-1, 0, 1]>
Časovna zapletenost: O(r2-r1), kjer sta r1 in r2 dano območje.
Kompleksnost prostora: O(r2-r1), kjer sta r1 in r2 dano območje.