Python range() Funktion: Float, List, For loop Exempel

⚡ Smart sammanfattning

Python range() är en inbyggd funktion som genererar en oföränderlig sekvens av heltal från ett startvärde upp till, men exklusive, ett stoppvärde, med hjälp av ett valfritt steg för att styra ökningen.

  • 🔘 Syntax: range(start, stop, step) accepterar upp till tre heltalsargument, där start som standard är 0 och step som standard är 1.
  • ☑️ Exklusivt stopp: Sekvensen stoppar alltid ett värde före stoppindexet, så range(5) ger 0 till 4.
  • Stegkontroll: Ett positivt steg ökar värdena, medan ett negativt steg räknar bakåt för ett omvänt intervall.
  • 🧪 Typgränser: Endast heltal accepteras, så flyttal eller strängargument genererar ett TypeError.
  • 🛠️ NumPy-flyttal: Funktionen NumPy arange() utökar range()-beteendet till flyttalsekvenser.
  • 🤖 AI-arbetsflöden: Maskininlärningskod förlitar sig på range() för att iterera träningsepoker, minibatchar och hyperparameterrutnät.

Python range() Funktion

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. Den Python range() är ett mycket användbart kommando och används oftast när du måste iterera med en för slinga.

syntax

Syntaxen för funktionen range() visas nedan:

range(start, stop, step)

Driftparametrar

  • Start: (valfritt) Startindexet är ett heltal, och om det inte anges är standardvärdet 0.
  • sluta: Stoppindexet avgör vid vilket värde intervallfunktionen måste stoppa. Det är obligatorisk indata för intervallfunktionen. Det sista värdet kommer alltid att vara 1 mindre än stoppvärdet.
  • steg: (valfritt) Stegvärdet är det tal med vilket nästa tal inom 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 skapa en talföljd.

Följande är skillnaderna 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 en for-loop för att hämta värdena.
Minnesanvändningen är högre, därför är kodkörningen långsam när man arbetar med en enorm datamängd. 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å utdata är 0 1 2 3 4 5 6 7 8 9.

Eftersom starten inte anges betraktas starten som 0 och det sista värdet anges fram 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 10. Här är startindex 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 slutar vid (10-1), dvs. 9. Steget är 2, så varje värde i sekvensen ökas med 2. Om stegvärdet inte anges är standardvärdet för steg 1.

for i in range(3, 10, 2):
    print(i, end =" ")

Produktion:

3 5 7 9

Hittills har vi sett hur funktionen range() ger det ökade värdet för det givna stoppvärdet. Låt oss nu prova ett exempel för att få det minskade värdet inom det givna intervallet.

Öka värdena inom intervallet med ett positivt steg

Parametern step i range() kan användas för att öka eller minska värdena. Som standard är det ett positivt värde, 1. Så den kommer alltid att ge ökade 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 Område: Minskning av värdena med negativt steg

Parametern step med ett negativt värde i range() kan användas för att hämta minskade värden. I exemplet nedan är stepvärdet negativt, så utdata kommer att minskas från det givna 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 ett negativt tal, dvs. -1. Med ovanstående indata kommer funktionen range() att minska värdet från 15 och framåt tills det når stoppvärdet, men skillnaden här är att det sista värdet kommer att vara stopp + 1.

Använder flytande tal i Python räckvidd()

Låt oss nu arbeta med range() med flyttal.

Exempel:

for i in range(10.5):
    print(i, end =" ")

I exemplet ovan har vi använt stoppvärdet 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 funktionen range() inte stöder flyttal för start, stopp och steg.

Använder for-loop med Python räckvidd()

I det här exemplet använder vi en array med tal och ser hur man itererar arrayen inuti en for-loop med hjälp av range().

Exempel:

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-loopen itererar till stoppvärdet, dvs. längden på arrayen, vilket blir 4, eftersom vi har fyra element i arr_list. Startvärdet blir 0 och step blir 1, så värdena börjar från 0 och stannar vid 3, dvs. längden på arrayen -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.

Exempel:

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.

Exempel:

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:

Exempel:

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

Exempel:

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.

Exempel:

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.

Exempel:

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

Genom att använda range() får man en lista över jämna tal i det angivna intervallet. Parametrarna för range() är: start är 2, stopp är 20 och steg är 2, så värdena ökas med 2 och ger jämna tal fram till stopp-2.

Exempel:

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 vi att sammanfoga två range()-funktioner med hjälp av itertools-modulens chain()-funktion.

Exempel:

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 arange()-funktion som fungerar och ger liknande utdata som range(). Arange() 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 visas ett felmeddelande som säger att den numpy-modulen inte hittades, måste du installera modulen enligt steg 2.

steg 2Installera 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 hämta flyttalsekvensen med range(), men det är möjligt med NumPy arange().

Exempel:

Det önskade intervallet är från 0.5 till 1.5. Värdet kommer att ökas 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

Utdata vi får är lite konstig; vissa av flyttallen visas med 16 decimaler. Detta händer på grund av komplexiteten i att lagra decimala flytande tal i binärt format. Du kan också avrunda värdena om det behövs och begränsa dem till de decimaler du behöver.

Vanliga frågor

In Python 3, range() returnerar ett lat, oföränderligt range-objekt, inte en lista. Det genererar tal på begäran. Lindar in det i list(range(n)) när en faktisk lista behövs. Python 2 returnerade en fullständig lista.

Stoppvärdet är exklusivt så att range(len(items)) mappas tydligt till nollbaserade index. För att inkludera slutpunkten, lägg till ett till stoppet, till exempel range(1, 11) för att räkna från 1 till 10.

Nej. Anrop av range(0, 10, 0) höjer ValueError: range() arg 3 får inte vara noll, eftersom ett nollsteg aldrig skulle kunna nå stoppvärdet och skulle loopa för evigt. Använd ett positivt eller negativt steg istället.

range() avvisar flyttal, men en listförståelse kan skala heltal: [x * 0.5 för x i range(0, 6)] producerar 0.0 till 2.5. Detta undviker import av NumPy samtidigt som steget fortfarande utförsping genom decimalvärden.

Ja. Ett range-objekt lagrar endast sina start-, stopp- och stegvärden, så range(1000000) använder samma lilla, konstanta mängd minne som range(10). Värden beräknas ett i taget under iterationen.

Använd operatorn in: 5 in range(0, 10) returnerar True. För range-objekt, Python utför detta medlemskapstest med snabb aritmetik i konstant tid istället för att skanna varje element, så det förblir effektivt över stora intervall.

Maskininlärningskod använder range() för att loopa över träningsepoker, iterera mini-batchar och bygga hyperparameterrutnät. NumPy arange() och linspace() utökar detta till flyttalsområden för inlärningshastighetsscheman och tröskelsvep som är vanliga i AI-experiment.

Ja. AI-kodningsassistenter som GitHub Copilot autocomplete range()-baserade loopar från en kommentar eller ett funktionsnamn, och agentverktyg kan omstrukturera indexloopar till renare enumerate()- eller förståelsemönster, även om de genererade gränserna fortfarande behöver en snabb granskning.

Sammanfatta detta inlägg med: