logo

Python | Vytvořte seznam čísel s daným rozsahem

Jsou dána dvě čísla r1 a r2 (který definuje rozsah), napište program Python pro vytvoření seznamu s daným rozsahem (včetně).

Příklady:



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

Pojďme diskutovat o několika přístupech Vytvoření seznamu čísel s daným rozsahem v Krajta .

Naivní přístup pomocí smyčky

Naivní metoda k vytvoření a seznam v daném rozsahu je nejprve vytvořit prázdný seznam a připojit následníka každého celého čísla v každé iteraci for smyčka .

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

>

>

Výstup:

[-1, 0, 1]>

Použití porozumění seznamu

Můžeme také použít porozumění seznamu za účelem. Stačí iterovat „položku“ ve smyčce for r1 na r2 a vrátit všechny „položky“ jako seznam. Toto bude jednoduchý jednořádkový kód.

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

>

>

Výstup:

[-1, 0, 1]>

Použití Python range()

Python přichází s přímou funkcí range(), která vytváří sekvenci čísel od počátečních po koncové hodnoty a tiskne každou položku v sekvenci. Používáme rozsah() s r1 a r2 a poté převeďte sekvenci na 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))>

>

>

java je stejná

Výstup:

[-1, 0, 1]>

Použití itertools:

K vytvoření seznamu čísel s daným rozsahem můžete také použít funkci range v kombinaci s řetězovou funkcí modulu itertools. To lze provést následovně:

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>

>

>

Výstup

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

Tím se vytvoří seznam čísel od r1 do r2 včetně zřetězením prvků v rozsahu pomocí funkce řetězu z modulu itertools.

Použití numpy.arange()

Krajta numpy.arange() vrátí seznam s rovnoměrně rozmístěnými prvky podle intervalu. Zde nastavíme interval jako 1 podle naší potřeby získat požadovaný výstup.

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

>

>

Výstup:

[-1, 0, 1]>

Pomocí numpy vytvořte seznam čísel s daným rozsahem

Zde vytváříme seznam čísel z daného rozsahu s definovaným přírůstkem.

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

>

>

Výstup:

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

Použití rekurze

Dalším přístupem k vytvoření seznamu čísel v daném rozsahu je použití rekurze. To zahrnuje definování rekurzivní funkce, která přebírá aktuální rozsah a seznam, který má být vrácen, a poté připojení aktuálního rozsahu k seznamu a opětovné volání funkce s dalším rozsahem, dokud není dosaženo konce rozsahu.

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>

>

>

Výstup

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

Tento přístup má časovou složitost O(n) a pomocný prostor O(n), kde n je počet prvků v seznamu.

Přístup 5: Použití map() a funkce lambda

V tomto přístupu používáme map() a funkci lambda ke generování seznamu čísel v daném rozsahu. map() aplikuje funkci lambda na každý prvek v sekvenci a vrátí objekt mapy. Mapový objekt převedeme na seznam a vrátíme jej.

Algoritmus

Pomocí map() a funkce lambda vygenerujte seznam čísel v daném rozsahu.
Převeďte objekt mapy na seznam a vraťte jej.

Python3


java linkedlist



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

>

>

Výstup

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

Časová složitost: O(r2-r1), kde r1 a r2 je daný rozsah.
Prostorová složitost: O(r2-r1), kde r1 a r2 jsou daný rozsah.