Python range() Funksjon: Float, List, For loop Eksempler
Hva er Python Område?
Python range() er en innebygd funksjon tilgjengelig med Python fra Python(3.x), og den gir en tallsekvens basert på start- og stoppindeksen som er gitt. I tilfelle startindeksen ikke er gitt, regnes indeksen som 0, og den vil øke verdien med 1 til stoppindeksen.
For eksempel vil range(5) gi deg verdiene 0,1,2,3,4 .The Python range() er en veldig nyttig kommando og brukes mest når du må iterere med for loop.
syntax
range(start, stop, step)
Parametre
- begynne: (valgfritt) Startindeksen er et heltall, og hvis den ikke er gitt, er standardverdien 0.
- Stoppe: Stoppindeksen bestemmer verdien som rekkeviddefunksjonen skal stoppe ved. Det er en obligatorisk inngang til rekkeviddefunksjonen. Den siste verdien vil alltid være 1 mindre enn stoppverdien.
- steg: (valgfritt). Trinnverdien er tallet som det neste tallet i området må økes med, som standard er det 1.
Returverdi
Returverdien er en tallsekvens fra den gitte start-til-stopp-indeksen.
Python range() Funksjon og historie
Python range() har blitt introdusert fra python versjon 3, før det var xrange() funksjonen.
Både range og xrange() brukes til å produsere en rekke tall.
Følgende er forskjellen mellom range og xrange():
| område() | xrange() |
|---|---|
| Range() gir tallrekkefølgen og returnerer en liste med tall. | xrange()-funksjonen gir et generatorobjekt som må sløyfes i en for-løkke for å få verdiene. |
| Range() returnerer en liste. | xrange() returnerer et generatorobjekt. |
| Range()-metoden bruker mer minne ettersom listen som returneres må lagres i forhold til xrange(). | Ettersom xrange() returnerer et generatorobjekt, gir det ikke verdier umiddelbart og må brukes inne i for-loop for å få verdiene. |
| Bruken av minne er mer, derfor er kjøringen av kode treg når du arbeider med et stort sett med data. | Kodekjøringen er raskere ved å bruke xrange(). |
Bruker range()
Dette eksemplet viser hvordan du skriver ut verdiene fra 0-9 ved å bruke range().
Verdien som brukes i området er 10, så utgangen er 0 1 2 3 4 5 6 7 8 9
Siden starten ikke er gitt, regnes starten som 0 og den siste verdien er gitt til 9. Den siste verdien er alltid 1 mindre enn den gitte verdien, dvs. stopp-1.
for i in range(10):
print(i, end =" ")
Utgang:
0 1 2 3 4 5 6 7 8 9
Bruke start og stopp i rekkevidde()
I koden er startverdien 3, og stoppverdien er 10. Her er startindeksen 3, så tallsekvensen starter fra 3 til stoppverdien. Den siste verdien i sekvensen vil være 1 mindre enn stoppverdien 10-1 = 9.
for i in range(3, 10):
print(i, end =" ")
Utgang:
3 4 5 6 7 8 9
Bruker start, stop og step
Startverdien er 3, så tallrekkefølgen vil starte på 3. Stoppverdien er 10, så tallrekkefølgen vil stoppe ved (10-1) dvs. 9. Steget er 2, så hver verdi i sekvensen vil økes med 2. Hvis trinnverdien ikke er oppgitt, er verdien for trinn som standard 1.
for i in range(3, 10, 2):
print(i, end =" ")
Utgang:
3 5 7 9
Så langt har vi sett hvordan range()-funksjonen gir den inkrementerte verdien for stoppverdien som er gitt. La oss nå prøve et eksempel for å få den reduserte verdien i området gitt.
Øke verdiene i området ved å bruke et positivt trinn.
Parametersteget i range() kan brukes til å øke/minske verdiene. Som standard er det en positiv verdi 1. Så det vil alltid gi økte verdier.
Trinnverdien må være positiv hvis du vil ha økte verdier som utdata.
for i in range(1, 30, 5):
print(i, end =" ")
Utgang:
1 6 11 16 21 26
Reverse Range: Dekrementerer verdiene ved å bruke negativt trinn
Parametertrinnet med negativ verdi i range() kan brukes til å få dekrementerte verdier. I eksemplet nedenfor er trinnverdien negativ, slik at utgangen blir redusert fra den angitte områdeverdien.
for i in range(15, 5, -1):
print(i, end =" ")
Utgang:
15 14 13 12 11 10 9 8 7 6
Startverdien er 15, stoppverdien er 5 og trinnverdien er negativt tall dvs. -1. Med de ovennevnte inngangene vil range() funksjonen redusere verdien fra 15 og utover til den når stoppverdien, men her er forskjellen at den siste verdien vil være stopp + 1.
Bruke flytende tall i Python område()
La oss nå jobbe med området() ved å bruke flyttall.
Eksempel:
for i in range(10.5):
print(i, end =" ")
I eksemplet ovenfor har vi brukt stoppverdi som 10.5.
Utgangen er:
Traceback (most recent call last):
File "python_range.py", line 1, in <module>
for i in range(10.5):
TypeError: 'float' object cannot be interpreted as an integer
Python gir en feil da range()-funksjonen ikke støtter flyttall for start, stopp og trinn.
Bruker for-loop med Python område()
I dette eksemplet vil vi bruke en matrise med tall, og la oss se hvordan vi bruker iterasjonen av matrisen inne for-loop ved å bruke range()
Eksempel:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']
for i in range(len(arr_list)):
print(arr_list[i], end =" ")
Utgang:
MysqlMongodb PostgreSQL Firebase
I eksemplet ovenfor har vi brukt len(arr_list) som stoppverdi. For-løkken vil iterere til stoppverdien, dvs. lengden på arrayet, og det vil være 4, siden vi har fire elementer i arr_list. Startverdien vil være 0 og trinnet vil være 1. Så verdiene vil starte fra 0 og stoppe ved 3, dvs. lengden på array -1 som betyr 4 -1 = 3.
Ved hjelp av Python range() som en liste
I dette eksemplet vil du se hvordan du kan bruke utdataene fra området som en liste.
Eksempel:
print(list(range(10)))
Utgang:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Du kan se at utgangen er et listeformat. Det var ikke nødvendig å sløyfe range() og ved å bruke list()-metoden kunne vi direkte konvertere utdataene fra område til listeformat.
Bruke tegn i python-området()
Så langt har vi brukt heltall i python range(). Vi har også sett at flyttall ikke støttes i python-området. La oss prøve å se resultatet om hva som skjer når vi bruker tegn.
Eksempel:
for c in range ('z'):
print(c, end =" ")
Utgang:
Traceback (most recent call last):
File "python_range.py", line 1, in <module>
for c in range ('z'):
TypeError: 'str' object cannot be interpreted as an integer
Det gir en feilmelding som sier at en streng ikke kan tolkes som et heltall.
For å få listen over alfabetene kan du tilpasse koden og få ønsket utgang som vist nedenfor:
Eksempel:
def get_alphabets(startletter, stopletter, step):
for c in range(ord(startletter.lower()), ord(stopletter.lower()), step):
yield chr(c)
print(list(get_alphabets("a", "h", 1)))
Utgang:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Slik får du tilgang til rekkeviddeelementer
Du kan bruke en for-løkke for å hente verdiene fra området eller bruke indeksen for å få tilgang til elementene fra range().
Bruker for-loop
Eksempel:
for i in range(6):
print(i)
Utgang:
0 1 2 3 4 5
Bruker indeks
Indeksen brukes med rekkevidde for å få verdien tilgjengelig på den posisjonen. Hvis områdeverdien er 5, for å få startverdien, kan du bruke range(5)[0] og neste verdiområde(5)[1] og så videre.
Eksempel:
startvalue = range(5)[0]
print("The first element in range is = ", startvalue)
secondvalue = range(5)[1]
print("The second element in range is = ", secondvalue)
lastvalue = range(5)[-1]
print("The first element in range is = ", lastvalue)
Utgang:
The first element in range is = 0 The second element in range is = 1 The first element in range is = 4
Bruker liste()
Denne metoden vil skrive ut alle elementene fra range(). Ved å bruke list() vil den returnere elementene fra range() i listeformat.
Eksempel:
print(list(range(10)))
Utgang:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Den gir listeutdata for området gitt.
Eksempel: Få partall med range()
Ved å bruke range() får du listen over partall i området gitt som input. Parametrene for range() er, start er 2, stopp er 20, og trinn er 2, så verdiene vil økes med 2 og vil gi partall til stopp-2.
Eksempel:
for i in range(2, 20, 2):
print(i, end =" ")
Utgang:
2 4 6 8 10 12 14 16 18
Slå sammen to-range() utganger
I dette eksemplet vil 2 range() funksjoner settes sammen ved hjelp av itertools module chain() funksjon.
Eksempel:
from itertools import chain
print("Merging two range into one")
frange =chain(range(10), range(10, 20, 1))
for i in frange:
print(i, end=" ")
Utgang:
Merging two range into one 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Bruke range() med NumPy
NumPy-modulen har en arange()-funksjon som fungerer og gir lignende utdata som range(). Arrangement() tar inn de samme parameterne som range().
Syntaks:
arange(start, stop, step)
Følg trinnene nedenfor for å jobbe med NumPy.
Trinn 1: Importer NumPy-modul
import numpy
I tilfelle under kjøring, gir det en feilmelding som sier at numpy-modulen ikke ble funnet, må du installere modulen som vist i trinn 2.
Trinn 2: Installer NumPy
pip install numpy
Trinn 3: Arbeidseksempel på arange() ved bruk av NumPy
import numpy as np for i in np.arange(10): print(i, end =" ")
Utgang:
0 1 2 3 4 5 6 7 8 9
Flytende kommatall som bruker NumPy arange()
Det er ikke mulig å få flyttallssekvensen ved å bruke range(), men det er mulig å bruke NumPy arange().
Eksempel:
Området vi ønsker er fra 0.5 til 1.5. Verdien vil øke med 0.2.
import numpy as np for i in np.arange(0.5, 1.5, 0.2): print(i, end =" ")
Utgang:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
Utgangen vi får er litt rar, noen av flyttallene vises med 16 desimaler. Dette skjer på grunn av kompleksiteten ved å lagre flytende desimaltall i binært format. Du kan også runde av verdiene om nødvendig og begrense dem til desimalene du trenger.
Sammendrag
- Python range() er en innebygd funksjon tilgjengelig med Python fra Python(3.x), og den gir en tallsekvens basert på start- og stoppindeksen som er gitt. I tilfelle startindeksen ikke er gitt, regnes indeksen som 0, og den vil øke verdien til stoppindeksen.
- Python range() er introdusert fra Python versjon 3, før det var xrange() funksjonen.
- Range() gir tallrekkefølgen og returnerer en liste med tall. xrange()-funksjonen gir et generatorobjekt som må sløyfes i en for-løkke for å få verdiene.
- Parametersteget i range() kan brukes til å øke/minske verdiene. Som standard er det en positiv verdi 1. Så det vil alltid gi økte verdier.
- Python gir en feil for flyttall ettersom range()-funksjonen kun støtter heltallsverdier.
- Verdiene fra range() kan nås ved å bruke for-loop, ved å bruke indeks og list()
- NumPy-modulen har en arange()-funksjon som fungerer og gir lignende utdata som range(). Arange() tar inn de samme parameterne som range().
- Det er mulig å få flyttallssekvensen NumPy arange() som ikke støttes ved å bruke range().
