logo

Python | Skapa en lista med nummer med ett givet intervall

Givet två siffror r1 och r2 (som definierar intervallet), skriv ett Python-program för att skapa en lista med det givna intervallet (inklusive).

Exempel:



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

Låt oss diskutera några tillvägagångssätt Skapa en lista med nummer med ett givet intervall inom Pytonorm .

Naivt tillvägagångssätt med en slinga

En naiv metod att skapa en lista inom ett givet intervall är att först skapa en tom lista och lägga till efterföljaren till varje heltal i varje iteration av för slinga .

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

>

>

Produktion:

[-1, 0, 1]>

Använda listförståelse

Vi kan också använda listförståelse för syftet. Iterera bara 'objekt' i en for-loop från r1 till r2 och returnera alla 'objekt' som lista. Detta kommer att vara en enkel enlinerskod.

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

>

>

Produktion:

[-1, 0, 1]>

Använder Python range()

Python kommer med en direkt funktion range() som skapar en sekvens av tal från start till stoppvärden och skriver ut varje objekt i sekvensen. Vi använder räckvidd() med r1 och r2 och konvertera sedan sekvensen till lista.

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

>

>

kommando touch i linux

Produktion:

[-1, 0, 1]>

Använda itertools:

Du kan också använda intervallfunktionen i kombination med itertools-modulens kedjefunktion för att skapa en lista med nummer med ett givet intervall. Detta kan göras på följande sätt:

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>

>

>

Produktion

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

Detta kommer att skapa en lista med siffror från r1 till och med r2 genom att koppla ihop elementen i intervallet med hjälp av kedjefunktionen från itertools-modulen.

Använder numpy.arange()

Pytonorm numpy.arange() returnerar en lista med jämnt fördelade element enligt intervallet. Här ställer vi in ​​intervallet som 1 efter vårt behov för att få önskad effekt.

Python3


rom



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

>

>

Produktion:

[-1, 0, 1]>

Använd numpy för att skapa en lista med nummer med ett givet intervall

Här skapar vi en lista med siffror från ett givet område med det definierade inkrementet.

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

>

>

Produktion:

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

Använda Rekursion

Ett annat sätt att skapa en lista med siffror inom ett givet intervall är att använda rekursion. Detta innebär att definiera en rekursiv funktion som tar in det aktuella intervallet och listan som ska returneras, och sedan lägga till det aktuella intervallet till listan och anropa funktionen igen med nästa intervall tills slutet av intervallet nås.

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>

>

>

Produktion

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

Detta tillvägagångssätt har en tidskomplexitet av O(n) och ett hjälprum av O(n), där n är antalet element i listan.

Tillvägagångssätt 5: Använder map() och lambda-funktion

I detta tillvägagångssätt använder vi map() och en lambda-funktion för att generera en lista med tal inom det givna intervallet. map() tillämpar lambdafunktionen på varje element i sekvensen och returnerar ett kartobjekt. Vi konverterar kartobjektet till en lista och returnerar det.

Algoritm

Använd map() och en lambda-funktion för att generera en lista med tal inom det givna intervallet.
Konvertera kartobjektet till en lista och returnera det.

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

>

>

Produktion

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

Tidskomplexitet: O(r2-r1) där r1 och r2 är det givna området.
Utrymmeskomplexitet: O(r2-r1) där r1 och r2 är det givna området.