Python range() Funksjon: Float, List, For loop Eksempler

โšก Smart oppsummering

Python range() er en innebygd funksjon som genererer en uforanderlig sekvens av heltall fra en startverdi opp til, men ikke inkludert, en stoppverdi, ved hjelp av et valgfritt trinn for รฅ kontrollere รธkningen.

  • ๐Ÿ”˜ Syntaks: range(start, stop, step) godtar opptil tre heltallsargumenter, der start som standard er 0 og step som standard er 1.
  • โ˜‘๏ธ Eksklusivt stopp: Sekvensen stopper alltid รฉn verdi fรธr stoppindeksen, sรฅ range(5) gir 0 til 4.
  • โœ… Trinnkontroll: Et positivt trinn รธker verdiene, mens et negativt trinn teller bakover for et motsatt omrรฅde.
  • ๐Ÿงช Typegrenser: Bare heltall godtas, sรฅ flyttall eller strengargumenter genererer en TypeError.
  • ๐Ÿ› ๏ธ NumPy-flyttall: NumPy-funksjonen arange() utvider range()-virkemรฅten til flyttallsekvenser.
  • ๐Ÿค– AI-arbeidsflyter: Maskinlรฆringskode er avhengig av range() for รฅ iterere treningsepoker, mini-batcher og hyperparameternett.

Python range() funksjon

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) sende ut verdiene 0, 1, 2, 3, 4. Python range() er en veldig nyttig kommando og brukes mest nรฅr du mรฅ iterere ved hjelp av en for slรธyfe.

syntax

Syntaksen til range()-funksjonen vises nedenfor:

range(start, stop, step)

Parametre

  • begynne: (valgfritt) Startindeksen er et heltall, og hvis den ikke er gitt, er standardverdien 0.
  • Stoppe: Stoppindeksen bestemmer verdien der omrรฅdefunksjonen mรฅ stoppe. Det er obligatorisk input til omrรฅdefunksjonen. 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 den 1.

Returverdi

Returverdien er en tallsekvens fra den gitte start-til-stopp-indeksen.

Python range() Funksjon og historie

Python range() er introdusert fra Python versjon 3; fรธr det var xrange() funksjonen.

Bรฅde range() og xrange() brukes til รฅ produsere en tallsekvens.

Fรธlgende er forskjellene 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(). Siden xrange() returnerer et generatorobjekt, gir det ikke verdier umiddelbart, og mรฅ brukes i en for-lรธkke for รฅ fรฅ verdiene.
Bruken av minne er mer, derfor er kodekjรธringen treg nรฅr man jobber med et stort datasett. 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รฅ utdataene 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 frem 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รฅ tallrekkefรธlgen vil starte 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 starter pรฅ 3. Stoppverdien er 10, sรฅ tallrekkefรธlgen stopper pรฅ (10-1), dvs. 9. Trinnet er 2, sรฅ hver verdi i sekvensen รธkes med 2. Hvis trinnverdien ikke er oppgitt, settes standardverdien for trinn til 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 รธkte verdien for den gitte stoppverdien. La oss nรฅ prรธve et eksempel for รฅ fรฅ den reduserte verdien i det gitte omrรฅdet.

ร˜ke verdiene i omrรฅdet ved hjelp av et positivt trinn

Parameteren step i range() kan brukes til รฅ รธke eller redusere verdiene. Som standard er den en positiv verdi, 1. Sรฅ den vil alltid gi inkrementerte verdier.

Trinnverdien mรฅ vรฆre positiv hvis du รธnsker inkrementerte verdier som utdata.

for i in range(1, 30, 5):
    print(i, end =" ")

Utgang:

1 6 11 16 21 26

Reverse Omrรฅde: Reduksjon av verdiene ved hjelp av negative trinn

Parameteren step med en negativ verdi i range() kan brukes til รฅ fรฅ dekrementerte verdier. I eksemplet nedenfor er step-verdien negativ, sรฅ utdataene vil bli dekrementert fra den gitte range-verdien.

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 et negativt tall, dvs. -1. Med inngangene ovenfor 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 stoppverdien 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 feilmelding fordi range()-funksjonen ikke stรธtter flyttall for start, stopp og trinn.

Bruker for-loop med Python omrรฅde()

I dette eksemplet skal vi bruke en array med tall og se hvordan vi itererer arrayet inne i en for-lรธkke ved hjelp av 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, som vil vรฆre 4, siden vi har fire elementer i arr_list. Startverdien vil vรฆre 0 og step vil vรฆre 1, sรฅ verdiene vil starte fra 0 og stoppe ved 3, dvs. lengden pรฅ arrayet -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()

Bruk av range() vil gi en liste over partall i omrรฅdet som er gitt som input. Parametrene for range() er: start er 2, stopp er 20, og trinn er 2, sรฅ verdiene vil รธkes med 2 og gi partall frem 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 vi sammenkoble to range()-funksjoner ved hjelp av itertools-modulens 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(). Arange() tar inn de samme parameterne som range().

Syntaks:

arange(start, stop, step)

For รฅ jobbe med NumPy, fรธlg trinnene nedenfor.

Trinn 1: Importer NumPy-modul

import numpy

Hvis det under kjรธring oppstรฅr en feilmelding om at den numpy-modulen ikke finnes, mรฅ du installere modulen som vist i trinn 2.

Trinn 2Installer 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รฅ flyttallsekvensen ved รฅ bruke range(), men det er mulig ved รฅ bruke NumPy arange().

Eksempel:

Omrรฅdet vi รธnsker er fra 0.5 til 1.5. Verdien รธkes 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

Utdataene vi fรฅr er litt merkelige; noen av flyttallene vises med 16 desimaler. Dette skjer pรฅ grunn av kompleksiteten ved รฅ lagre desimalflytende tall i binรฆrt format. Du kan ogsรฅ runde verdiene om nรธdvendig og begrense dem til desimalene du trenger.

Spรธrsmรฅl og svar

In Python 3, range() returnerer et lat, uforanderlig omrรฅdeobjekt, ikke en liste. Det genererer tall pรฅ forespรธrsel. Pakk det inn i list(range(n)) nรฅr en faktisk liste er nรธdvendig. Python 2 returnerte en fullstendig liste.

Stoppverdien er eksklusiv slik at range(len(items)) kartlegges tydelig til nullbaserte indekser. For รฅ inkludere endepunktet, legg til รฉn til stoppet, for eksempel range(1, 11) for รฅ telle fra 1 til 10.

Nei. Kalling av range(0, 10, 0) รธker ValueError: range() arg 3 mรฅ ikke vรฆre null, fordi et nulltrinn aldri kan nรฅ stoppverdien og ville gรฅ i en lรธkke for alltid. Bruk et positivt eller negativt trinn i stedet.

range() avviser flyttall, men en listeforstรฅelse kan skalere heltall: [x * 0.5 for x i range(0, 6)] produserer 0.0 til 2.5. Dette unngรฅr import av NumPy samtidig som det fortsatt utfรธres et trinnping gjennom desimalverdier.

Ja. Et range-objekt lagrer bare start-, stopp- og trinnverdiene, sรฅ range(1000000) bruker den samme lille, konstante mengden minne som range(10). Verdier beregnes รฉn om gangen under iterasjonen.

Bruk in-operatoren: 5 in range(0, 10) returnerer True. For range-objekter, Python utfรธrer denne medlemskapstesten med rask aritmetikk i konstant tid i stedet for รฅ skanne hvert element, slik at den forblir effektiv over store omrรฅder.

Maskinlรฆringskode bruker range() til รฅ gรฅ over treningsepoker i lรธkker, iterere mini-batcher og bygge hyperparameternett. NumPy arange() og linspace() utvider dette til flyttallsomrรฅder for lรฆringshastighetsplaner og terskelsรธk som er vanlige i AI-eksperimenter.

Ja. AI-kodingsassistenter som GitHub Copilot autofullfรธr range()-baserte lรธkker fra en kommentar eller et funksjonsnavn, og agentverktรธy kan omstrukturere indekslรธkker til renere enumerate()- eller forstรฅelsesmรธnstre, selv om de genererte grensene fortsatt trenger en rask gjennomgang.

Oppsummer dette innlegget med: