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: