Python range() Funktion: Float, List, For loop Exempel
Vad är Python Räckvidd?
Python range() är en inbyggd funktion tillgänglig med Python från Python(3.x), och det ger en sekvens av siffror baserat på det angivna start- och stoppindexet. Om startindexet inte anges anses indexet vara 0, och det kommer att öka värdet med 1 till stoppindexet.
Till exempel kommer range(5) att mata ut värdena 0,1,2,3,4 .The Python range() är ett mycket användbart kommando och används oftast när du måste iterera med för loop.
syntax
range(start, stop, step)
parametrar
- Start: (valfritt) Startindexet är ett heltal, och om det inte anges är standardvärdet 0.
- sluta: Stoppindexet bestämmer vid vilket värde intervallfunktionen ska stanna. Det är en obligatorisk ingång till intervallfunktionen. Det sista värdet kommer alltid att vara 1 mindre än stoppvärdet.
- steg: (valfritt). Stegvärdet är talet med vilket nästa nummer i intervallet måste ökas, som standard är det 1.
Returvärde
Returvärdet är en sekvens av tal från det givna start-till-stopp-indexet.
Python range() Funktion och historik
Python range() har introducerats från python version 3, innan dess var xrange() funktionen.
Både range och xrange() används för att producera en talföljd.
Följande är skillnaden mellan range och xrange():
räckvidd() | xrange() |
---|---|
Range() ger talföljden och returnerar en lista med tal. | Funktionen xrange() ger ett generatorobjekt som måste loopas i en for-loop för att få värdena. |
Range() returnerar en lista. | xrange() returnerar ett generatorobjekt. |
Metoden range() använder mer minne eftersom listan som returneras måste lagras i jämförelse med xrange(). | Eftersom xrange() returnerar ett generatorobjekt, ger det inte värden direkt och måste användas inuti for-loop för att få värdena. |
Minnesanvändningen är mer, därför är kodens exekvering långsam när man arbetar med en enorm uppsättning data. | Kodexekveringen är snabbare med xrange(). |
Använder range()
Det här exemplet visar hur man skriver ut värdena från 0-9 med range().
Värdet som används i intervallet är 10, så utsignalen är 0 1 2 3 4 5 6 7 8 9
Eftersom starten inte ges anses starten som 0 och det sista värdet ges till 9. Det sista värdet är alltid 1 mindre än det givna värdet dvs stopp-1.
for i in range(10): print(i, end =" ")
Produktion:
0 1 2 3 4 5 6 7 8 9
Använder start och stopp i intervallet()
I koden är startvärdet 3, och stoppvärdet är 10. Här är startindexet 3, så talföljden börjar från 3 till stoppvärdet. Det sista värdet i sekvensen kommer att vara 1 mindre än stoppvärdet 10-1 = 9.
for i in range(3, 10): print(i, end =" ")
Produktion:
3 4 5 6 7 8 9
Använder start, stop och step
Startvärdet är 3, så talföljden börjar vid 3. Stoppvärdet är 10, så talföljden stannar vid (10-1) dvs. 9. Steget är 2, så varje värde i sekvensen ökas med 2. Om stegvärdet inte anges är värdet för steg som standard 1.
for i in range(3, 10, 2): print(i, end =" ")
Produktion:
3 5 7 9
Hittills har vi sett hur range()-funktionen ger det inkrementerade värdet för det angivna stoppvärdet. Låt oss nu försöka med ett exempel för att få det dekrementerade värdet i det angivna intervallet.
Öka värdena inom intervallet med ett positivt steg.
Parametersteget i range() kan användas för att öka/minska värdena. Som standard är det ett positivt värde 1. Så det kommer alltid att ge inkrementerade värden.
Stegvärdet måste vara positivt om du vill ha ökade värden som utdata.
for i in range(1, 30, 5): print(i, end =" ")
Produktion:
1 6 11 16 21 26
Reverse Range: Minska värdena med negativa steg
Parametersteget med negativt värde i range() kan användas för att få dekrementerade värden. I exemplet nedan är stegvärdet negativt så utsignalen kommer att minskas från det angivna intervallvärdet.
for i in range(15, 5, -1): print(i, end =" ")
Produktion:
15 14 13 12 11 10 9 8 7 6
Startvärdet är 15, stoppvärdet är 5 och stegvärdet är negativt tal dvs -1. Med ovanstående ingångar kommer range()-funktionen att minska värdet från 15 och framåt tills den når stoppvärdet, men här är skillnaden att det sista värdet blir stop + 1.
Använder flytande tal i Python räckvidd()
Låt oss nu arbeta med range() med flyttal.
Exempelvis:
for i in range(10.5): print(i, end =" ")
I exemplet ovan har vi använt stoppvärdet som 10.5.
Utgången är:
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 ger ett fel eftersom range()-funktionen inte stöder flyttal för start, stopp och steg.
Använder for-loop med Python räckvidd()
I det här exemplet kommer vi att använda en array med tal och låt oss se hur man använder iterationen av arrayen inuti for-loop med range()
Exempelvis:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase'] for i in range(len(arr_list)): print(arr_list[i], end =" ")
Produktion:
MysqlMongodb PostgreSQL Firebase
I exemplet ovan har vi använt len(arr_list) som stoppvärde. For-slingan kommer att iterera till stoppvärdet, dvs längden på arrayen och det blir 4, eftersom vi har fyra objekt i arr_listan. Startvärdet kommer att vara 0 och steget kommer att vara 1. Så värdena börjar från 0 och stannar vid 3, dvs längden på array -1 vilket betyder 4 -1 = 3.
Använda Python range() som en lista
I det här exemplet kommer vi att se hur man använder utdata från intervall som en lista.
Exempelvis:
print(list(range(10)))
Produktion:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Du kan se att resultatet är ett listformat. Det var inte nödvändigt att loopa range() och med hjälp av list()-metoden kunde vi direkt konvertera utdata från range till listformat.
Använda tecken i python range()
Hittills har vi använt heltal i python range(). Vi har också sett att flyttalsnummer inte stöds i python-intervallet. Låt oss försöka se resultatet om vad som händer när vi använder tecken.
Exempelvis:
for c in range ('z'): print(c, end =" ")
Produktion:
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 ger ett fel som säger att en sträng inte kan tolkas som ett heltal.
För att få listan över alfabeten kan du anpassa koden och få önskad utdata som visas nedan:
Exempelvis:
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)))
Produktion:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Hur man kommer åt Range Elements
Du kan använda en for-loop för att få värdena från området eller använda indexet för att komma åt elementen från range().
Använder for-loop
Exempelvis:
for i in range(6): print(i)
Produktion:
0 1 2 3 4 5
Använder index
Indexet används med intervall för att få värdet tillgängligt på den positionen. Om intervallvärdet är 5, för att få startvärdet, kan du använda range(5)[0] och nästa värde range(5)[1] och så vidare.
Exempelvis:
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)
Produktion:
The first element in range is = 0 The second element in range is = 1 The first element in range is = 4
Använder list()
Denna metod kommer att skriva ut alla element från range(). Genom att använda list() returneras elementen från range() i listformat.
Exempelvis:
print(list(range(10)))
Produktion:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Det ger listutdata för det angivna intervallet.
Exempel: Få jämna tal med range()
Om du använder range() får du listan över jämna tal i intervallet som anges som indata. Parametrarna för range() är, start är 2, stopp är 20 och steg är 2, så värdena kommer att ökas med 2 och ger jämna tal till stopp-2.
Exempelvis:
for i in range(2, 20, 2): print(i, end =" ")
Produktion:
2 4 6 8 10 12 14 16 18
Sammanfogar två-intervall()-utgångar
I det här exemplet kommer 2 range() funktioner att sammanfogas med hjälp av itertools module chain() funktion.
Exempelvis:
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=" ")
Produktion:
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
Använder range() med NumPy
NumPy-modulen har en funktion arange() som fungerar och ger liknande utdata som range(). Arrange() tar in samma parametrar som range().
Syntax:
arange(start, stop, step)
För att arbeta med NumPy följ stegen nedan.
steg 1: Importera NumPy-modul
import numpy
Om det under körning ger ett felmeddelande som säger att numpy-modulen inte hittades, måste du installera modulen som visas i steg 2.
steg 2: Installera NumPy
pip install numpy
steg 3: Arbetsexempel på arange() med NumPy
import numpy as np for i in np.arange(10): print(i, end =" ")
Produktion:
0 1 2 3 4 5 6 7 8 9
Flyttal med hjälp av NumPy arange()
Det är inte möjligt att få flyttalssekvensen med range(), men det är möjligt med NumPy arange().
Exempelvis:
Det intervall vi vill ha är från 0.5 till 1.5. Värdet kommer att öka med 0.2.
import numpy as np for i in np.arange(0.5, 1.5, 0.2): print(i, end =" ")
Produktion:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
Resultatet vi får är lite konstigt, vissa av flyttalen visas med 16 decimaler. Detta händer på grund av komplexiteten i att lagra decimala flytande tal i binärt format. Du kan även runda av värdena om det behövs och begränsa dem till de decimaler du behöver.
Sammanfattning
- Python range() är en inbyggd funktion tillgänglig med Python från Python(3.x), och det ger en sekvens av siffror baserat på start- och stoppindex som anges. Om startindexet inte anges anses indexet vara 0, och det kommer att öka värdet till stoppindexet.
- Python range() har introducerats från Python version 3, innan dess var xrange() funktionen.
- Range() ger talföljden och returnerar en lista med tal. Funktionen xrange() ger ett generatorobjekt som måste loopas i en for-loop för att få värdena.
- Parametersteget i range() kan användas för att öka/minska värdena. Som standard är det ett positivt värde 1. Så det kommer alltid att ge inkrementerade värden.
- Python ger ett fel för flyttal eftersom range()-funktionen endast stöder heltalsvärden.
- Värdena från range() kan nås med for-loop, med index och list()
- NumPy-modulen har en funktion arange() som fungerar och ger liknande utdata som range(). arange() tar in samma parametrar som range().
- Det är möjligt att få flyttalssekvensen NumPy arange() som inte stöds med range().