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.