logo

Python | Lag liste over tall med gitt rekkevidde

Gitt to tall r1 og r2 (som definerer området), skriv et Python-program for å lage en liste med det gitte området (inkludert).

Eksempler:

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

La oss diskutere noen få tilnærminger til Opprette en liste over tall med et gitt område i Python .



Naiv tilnærming ved hjelp av en løkke

En naiv metode for å lage en liste innenfor et gitt område er å først lage en tom liste og legge til etterfølgeren til hvert heltall i hver iterasjon av for Løkke .

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

>

>

Produksjon:

[-1, 0, 1]>

Bruke listeforståelse

Vi kan også bruke listeforståelse for formålet. Bare gjenta 'vare' i en for-løkke fra r1 til r2 og returner alle 'varer' som liste. Dette vil være en enkel enlinjekode.

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

>

>

Produksjon:

[-1, 0, 1]>

Bruker Python range()

Python kommer med en direkte funksjon range() som lager en sekvens av tall fra start til stopp verdier og skriver ut hvert element i sekvensen. Vi bruker område() med r1 og r2 og konverter deretter sekvensen til liste.

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

>

>

hadoop opplæring

Produksjon:

[-1, 0, 1]>

Bruke itertools:

Du kan også bruke rekkeviddefunksjonen i kombinasjon med itertools-modulens kjedefunksjon for å lage en liste over tall med et gitt område. Dette kan gjøres som følger:

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>

>

>

Produksjon

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

Dette vil lage en liste over tall fra r1 til og med r2 ved å lenke elementene i området sammen ved å bruke kjedefunksjonen fra itertools-modulen.

Bruker numpy.arange()

Python numpy.arange() returnerer en liste med jevnt fordelte elementer i henhold til intervallet. Her setter vi intervallet til 1 i henhold til vårt behov for å få ønsket utgang.

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

>

>

Produksjon:

[-1, 0, 1]>

Bruke numpy for å lage en liste over tall med gitt rekkevidde

Her lager vi en liste over tall fra et gitt område med den definerte økningen.

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

>

>

Produksjon:

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

Bruker rekursjon

En annen tilnærming til å lage en liste over tall innenfor et gitt område er å bruke rekursjon. Dette innebærer å definere en rekursiv funksjon som tar inn gjeldende område og listen som skal returneres, og deretter legge til gjeldende område til listen og kalle opp funksjonen igjen med neste område til slutten av området er nådd.

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>

design mønstre i java

>

>

Produksjon

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

Denne tilnærmingen har en tidskompleksitet på O(n) og et hjelperom på O(n), der n er antall elementer i listen.

Tilnærming 5: Bruk av map() og lambda-funksjon

I denne tilnærmingen bruker vi map() og en lambda-funksjon for å generere en liste over tall innenfor det gitte området. map() bruker lambda-funksjonen på hvert element i sekvensen og returnerer et kartobjekt. Vi konverterer kartobjektet til en liste og returnerer det.

Algoritme

Bruk map() og en lambda-funksjon for å generere en liste over tall innenfor det gitte området.
Konverter kartobjektet til en liste og returner 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]>

>

>

Produksjon

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

Tidskompleksitet: O(r2-r1) hvor r1 og r2 er det gitte området.
Romkompleksitet: O(r2-r1) hvor r1 og r2 er det gitte området.