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

⚡ Smart opsummering

Python range() er en indbygget funktion, der genererer en uforanderlig sekvens af heltal fra en startværdi op til, men ikke inklusive, en stopværdi, ved hjælp af et valgfrit trin til at styre forøgelsen.

  • 🔘 Syntaks: range(start, stop, step) accepterer op til tre heltalsargumenter, hvor start som standard er 0 og step som standard er 1.
  • ☑️ Eksklusivt stop: Sekvensen stopper altid én værdi før stopindekset, så range(5) giver 0 til 4.
  • Trinkontrol: Et positivt trin øger værdierne, mens et negativt trin tæller baglæns for et omvendt interval.
  • 🧪 Typegrænser: Kun heltal accepteres, så flydende komma- eller strengargumenter genererer en TypeError.
  • 🛠️ NumPy flyder: Funktionen NumPy arange() udvider range()-adfærden til flydende-komma-sekvenser.
  • 🤖 AI-arbejdsgange: Maskinlæringskode er afhængig af range() til at iterere træningsepoker, minibatcher og hyperparametergitre.

Python range() Funktion

Hvad er Python Rækkevidde?

Python range() er en indbygget funktion tilgængelig med Python fra Python (3.x), og det giver en talfølge baseret på det angivne start- og stopindeks. Hvis startindekset ikke er angivet, betragtes indekset som 0, og det vil øge værdien med 1 indtil stopindekset.

For eksempel vil range(5) udskrive værdierne 0, 1, 2, 3, 4. Python range() er en meget nyttig kommando og bruges mest når du skal iterere ved hjælp af en til løkke.

Syntaks

Syntaksen for funktionen range() er vist nedenfor:

range(start, stop, step)

Driftsparametre

  • Start: (valgfrit) Startindekset er et heltal, og hvis det ikke er givet, er standardværdien 0.
  • hold op: Stopindekset bestemmer den værdi, hvorved intervalfunktionen skal stoppe. Det er et obligatorisk input til intervalfunktionen. Den sidste værdi vil altid være 1 mindre end stopværdien.
  • trin: (valgfrit) Trinværdien er det tal, som det næste tal i området skal øges med; som standard er den 1.

Returværdi

Returværdien er en sekvens af tal fra det givne start-til-stop-indeks.

Python range() Funktion og historie

Python range() er blevet introduceret fra Python version 3; før det var xrange() funktionen.

Både range() og xrange() bruges til at producere en talsekvens.

Følgende er forskellene mellem range() og xrange():

rækkevidde() xrange()
Range() giver talrækken og returnerer en liste med tal. Funktionen xrange() giver et generatorobjekt, der skal sløjfes i en for-loop for at få værdierne.
Range() returnerer en liste. xrange() returnerer et generatorobjekt.
Range()-metoden bruger mere hukommelse, da den returnerede liste skal lagres i forhold til xrange(). Da xrange() returnerer et generatorobjekt, giver det ikke værdier med det samme og skal bruges i en for-loop for at få værdierne.
Hukommelsesforbruget er højere, derfor er kodeudførelsen langsom, når man arbejder med et stort datasæt. Kodeudførelsen er hurtigere ved at bruge xrange().

Bruger range()

Dette eksempel viser, hvordan man udskriver værdierne fra 0-9 ved hjælp af range().

Den anvendte værdi i området er 10, så outputtet er 0 1 2 3 4 5 6 7 8 9.

Da starten ikke er angivet, betragtes starten som 0, og den sidste værdi gives indtil 9. Den sidste værdi er altid 1 mindre end den givne værdi, dvs. stop-1.

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

Output:

0 1 2 3 4 5 6 7 8 9

Brug af start og stop i rækkevidde()

I koden er startværdien 3, og stopværdien er 10. Her er startindekset 3, så talrækken starter fra 3 til stopværdien. Den sidste værdi i sekvensen vil være 1 mindre end stopværdien, 10-1 = 9.

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

Output:

3 4 5 6 7 8 9

Brug af start, stop og step

Startværdien er 3, så talrækken starter ved 3. Stopværdien er 10, så talrækken stopper ved (10-1), dvs. 9. Trinet er 2, så hver værdi i sekvensen øges med 2. Hvis trinværdien ikke er angivet, er standardværdien for trin 1.

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

Output:

3 5 7 9

Indtil videre har vi set, hvordan funktionen range() giver den inkrementerede værdi for den givne stopværdi. Lad os nu prøve et eksempel for at få den dekrementerede værdi i det givne interval.

Forøgelse af værdierne inden for området ved hjælp af et positivt trin

Parameteren step i range() kan bruges til at øge eller mindske værdierne. Som standard er den en positiv værdi, 1. Så den vil altid give inkrementerede værdier.

Trinværdien skal være positiv, hvis du ønsker inkrementerede værdier som output.

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

Output:

1 6 11 16 21 26

Reverse Område: Reduktion af værdierne ved hjælp af negative trin

Parameteren step med en negativ værdi i range() kan bruges til at hente dekrementerede værdier. I eksemplet nedenfor er step-værdien negativ, så outputtet vil blive dekrementeret fra den givne intervalværdi.

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

Output:

15 14 13 12 11 10 9 8 7 6

Startværdien er 15, stopværdien er 5, og stepværdien er et negativt tal, dvs. -1. Med ovenstående input vil range()-funktionen reducere værdien fra 15 og fremefter, indtil den når stopværdien, men her er forskellen, at den sidste værdi vil være stop + 1.

Brug af flydende tal i Python rækkevidde()

Lad os nu arbejde på range() ved hjælp af flydende kommatal.

Eksempel:

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

I ovenstående eksempel har vi brugt stopværdien til 10.5.

Udgangen 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 giver en fejl, da funktionen range() ikke understøtter flydende kommatal for start, stop og step.

Bruger for-loop med Python rækkevidde()

I dette eksempel bruger vi et array af tal og ser, hvordan man itererer arrayet i en for-loop ved hjælp af range().

Eksempel:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']

for i in range(len(arr_list)):
    print(arr_list[i], end =" ")

Output:

MysqlMongodb PostgreSQL Firebase

I ovenstående eksempel har vi brugt len(arr_list) som stopværdi. for-løkken vil iterere indtil stopværdien, dvs. længden af ​​arrayet, som vil være 4, da vi har fire elementer i arr_list. Startværdien vil være 0 og step vil være 1, så værdierne vil starte fra 0 og stoppe ved 3, dvs. længden af ​​arrayet -1, hvilket betyder 4 -1 = 3.

Ved brug af Python range() som en liste

I dette eksempel vil vi se, hvordan man gør brug af output fra range som en liste.

Eksempel:

print(list(range(10)))

Output:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Du kan se, at outputtet er et listeformat. Det var ikke nødvendigt at sløjfe range() og ved hjælp af list()-metoden kunne vi direkte konvertere output fra område til listeformat.

Brug af tegn i python-område()

Indtil videre har vi brugt heltal i python range(). Vi har også set, at floating-point-tal ikke understøttes i python-området. Lad os prøve at se resultatet af, hvad der sker, når vi bruger tegn.

Eksempel:

for c in range ('z'):
        print(c, end =" ")

Output:

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 giver en fejl, der siger, at en streng ikke kan fortolkes som et heltal.

For at få listen over alfabeterne kan du tilpasse koden og få det ønskede output 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)))

Output:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

Sådan får du adgang til Range Elements

Du kan bruge en for-loop til at få værdierne fra området eller bruge indekset til at få adgang til elementerne fra range().

Bruger for-loop

Eksempel:

for i in range(6):
    print(i)

Output:

0
1
2
3
4
5

Brug af indeks

Indekset bruges med interval for at få den tilgængelige værdi på den position. Hvis intervalværdien er 5, for at få startværdien, kan du bruge range(5)[0] og den næste værdi range(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)

Output:

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

Brug af liste()

Denne metode vil udskrive alle elementer fra range(). Ved at bruge list() returneres elementerne fra range() i listeformat.

Eksempel:

print(list(range(10)))

Output:

 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Det giver listen output for det angivne område.

Eksempel: Få lige tal ved hjælp af range()

Brug af range() vil give en liste over lige tal i det område, der er angivet som input. Parametrene for range() er: start er 2, stop er 20, og step er 2, så værdierne vil blive øget med 2 og give lige tal indtil stop-2.

Eksempel:

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

Output:

2 4 6 8 10 12 14 16 18

Sammenlægning af to-range()-output

I dette eksempel vil vi sammenkæde 2 range()-funktioner ved hjælp af itertools-modulets chain()-funktion.

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=" ")

Output:

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

Brug af range() med NumPy

NumPy-modulet har en arange()-funktion, der fungerer og giver lignende output som range(). Arange() tager imod de samme parametre som range().

Syntaks:

arange(start, stop, step)

For at arbejde med NumPy skal du følge nedenstående trin.

Trin 1: Importer NumPy-modul

import numpy

Hvis den under udførelsen giver en fejl, der siger "numpy-modulet blev ikke fundet", skal du installere modulet som vist i trin 2.

Trin 2Installer NumPy

pip install numpy

Trin 3: Arbejdseksempel på arange() ved hjælp af NumPy

import numpy as np

for  i in np.arange(10):
   print(i, end =" ")  

Output:

0 1 2 3 4 5 6 7 8 9

Flydende kommatal ved hjælp af NumPy arange()

Det er ikke muligt at hente flydende-komma-sekvensen ved hjælp af range(), men det er muligt ved hjælp af NumPy arange().

Eksempel:

Det ønskede interval er fra 0.5 til 1.5. Værdien øges med 0.2.

import numpy as np

for  i in np.arange(0.5, 1.5, 0.2):
   print(i, end =" ")  

Output:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

Det output, vi får, er lidt mærkeligt; nogle af de flydende tal vises med 16 decimaler. Dette sker på grund af kompleksiteten ved at gemme decimaltal i binært format. Du kan også afrunde værdierne, hvis det er nødvendigt, og begrænse dem til de decimaler, du har brug for.

Ofte Stillede Spørgsmål

In Python 3, range() returnerer et dovent, uforanderligt områdeobjekt, ikke en liste. Det genererer tal efter behov. Pakk det ind i list(range(n)), når en faktisk liste er påkrævet. Python 2 returnerede en fuld liste.

Stopværdien er eksklusiv, så range(len(items)) knyttes tydeligt til nulbaserede indekser. For at inkludere slutpunktet skal du lægge én til stoppet, for eksempel range(1, 11) for at tælle fra 1 til 10.

Nej. Kald af range(0, 10, 0) giver ValueError: range() arg 3 må ikke være nul, da et nultrin aldrig kan nå stopværdien og vil løkke for evigt. Brug i stedet et positivt eller negativt trin.

range() afviser flydende tal, men en listeforståelse kan skalere heltal: [x * 0.5 for x i range(0, 6)] producerer 0.0 til 2.5. Dette undgår import af NumPy, mens der stadig udføres trinviseping gennem decimalværdier.

Ja. Et range-objekt gemmer kun sine start-, stop- og trinværdier, så range(1000000) bruger den samme lille, konstante mængde hukommelse som range(10). Værdier beregnes én ad gangen under iterationen.

Brug in-operatoren: 5 in range(0, 10) returnerer True. For range-objekter, Python udfører denne medlemskabstest med hurtig aritmetik i konstant tid i stedet for at scanne hvert element, så den forbliver effektiv over store intervaller.

Maskinlæringskode bruger range() til at loope over træningsepoker, iterere mini-batches og bygge hyperparametergitre. NumPy arange() og linspace() udvider dette til flydende kommaintervaller for læringshastighedsplaner og tærskelværdier, der er almindelige i AI-eksperimenter.

Ja. AI-kodningsassistenter som f.eks. GitHub Copilot autofuldførelse af range()-baserede løkker fra en kommentar eller et funktionsnavn, og agentiske værktøjer kan omstrukturere indeksløkker til renere enumerate()- eller forståelsesmønstre, selvom de genererede grænser stadig kræver en hurtig gennemgang.

Opsummer dette indlæg med: