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.