Python range() Functie: Float, List, For loop Voorbeelden

โšก Slimme samenvatting

Python `range()` is een ingebouwde functie die een onveranderlijke reeks gehele getallen genereert vanaf een startwaarde tot, maar exclusief, een eindwaarde, waarbij een optionele stapgrootte wordt gebruikt om de increment te bepalen.

  • ๐Ÿ”˜ Syntax: range(start, stop, step) accepteert maximaal drie integerargumenten, waarbij start standaard 0 is en step standaard 1.
  • โ˜‘๏ธ Exclusieve stop: De reeks stopt altijd รฉรฉn waarde vรณรณr de stopindex, dus range(5) levert de waarden 0 tot en met 4 op.
  • โœ… Stappenregeling: Een positieve stap verhoogt de waarden, terwijl een negatieve stap achteruit telt voor een omgekeerd bereik.
  • ๐Ÿงช Typebeperkingen: Alleen gehele getallen worden geaccepteerd; argumenten van het type drijvende-komma of tekenreeks leiden tot een TypeError.
  • ๏ธ NumPy-zwevende-kommawaarden: De NumPy-functie arange() breidt het gedrag van range() uit naar drijvende-kommareeksen.
  • ๐Ÿค– AI-workflows: Machine learning-code maakt gebruik van range() om trainingsepochs, mini-batches en hyperparametergrids te doorlopen.

Python bereik() Functie

Wat is Python Bereik?

Python range() is een ingebouwde functie die beschikbaar is bij Python vanaf Python (3.x), en het geeft een reeks getallen gebaseerd op de gegeven start- en stopindex. In het geval dat de startindex niet gegeven is, wordt de index beschouwd als 0, en zal de waarde met 1 verhoogd worden tot de stopindex.

Range(5) zal bijvoorbeeld de waarden 0, 1, 2, 3, 4 uitvoeren. Python `range()` is een zeer nuttig commando en wordt vooral gebruikt wanneer je moet itereren met behulp van een for loop.

Syntaxis

De syntaxis van de functie range() wordt hieronder weergegeven:

range(start, stop, step)

Kenmerken

  • begin: (optioneel) De startindex is een geheel getal en als deze niet wordt opgegeven, is de standaardwaarde 0.
  • hou op: De stopindex bepaalt de waarde waarop de bereikfunctie moet stoppen. Het is een verplichte invoer voor de bereikfunctie. De laatste waarde zal altijd 1 lager zijn dan de stopwaarde.
  • stap: (optioneel) De stapwaarde is het getal waarmee het volgende getal in het bereik moet worden verhoogd; standaard is dit 1.

Winstwaarde

De retourwaarde is een reeks getallen vanaf de opgegeven start- tot stopindex.

Python range() Functie en geschiedenis

Python range() is geรฏntroduceerd vanaf Python versie 3; daarvoor was xrange() de functie.

Zowel range() als xrange() worden gebruikt om een โ€‹โ€‹reeks getallen te produceren.

Hieronder volgen de verschillen tussen range() en xrange():

bereik () xbereik()
De range() functie geeft de reeks getallen en retourneert een lijst met getallen. De functie xrange() geeft een generatorobject dat in een for-lus moet worden doorlopen om de waarden op te halen.
De range() retourneert een lijst. xrange() retourneert een generatorobject.
De methode range() gebruikt meer geheugen omdat de geretourneerde lijst moet worden opgeslagen in vergelijking met xrange(). Omdat xrange() een generatorobject retourneert, geeft het niet direct waarden en moet het binnen een for-loop worden gebruikt om de waarden te verkrijgen.
Het geheugengebruik is hoger, waardoor de code-uitvoering trager verloopt bij het verwerken van grote datasets. De code-uitvoering is sneller met behulp van xrange().

Bereik() gebruiken

Dit voorbeeld laat zien hoe u de waarden van 0-9 kunt afdrukken met behulp van range().

De waarde die in het bereik wordt gebruikt is 10, dus de uitvoer is 0 1 2 3 4 5 6 7 8 9.

Omdat het beginpunt niet is opgegeven, wordt het beginpunt als 0 beschouwd en wordt de laatste waarde gegeven tot en met 9. De laatste waarde is altijd 1 minder dan de opgegeven waarde, oftewel stop-1.

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

Output:

0 1 2 3 4 5 6 7 8 9

Start en stop gebruiken binnen bereik()

In de code is de startwaarde 3 en de stopwaarde 10. Omdat de startindex 3 is, begint de reeks getallen bij 3 en loopt door tot de stopwaarde. De laatste waarde in de reeks is 1 minder dan de stopwaarde, 10-1 = 9.

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

Output:

3 4 5 6 7 8 9

Gebruik start, stop en stap

De startwaarde is 3, dus de getallenreeks begint bij 3. De stopwaarde is 10, dus de getallenreeks stopt bij (10-1), oftewel 9. De stapgrootte is 2, dus elke waarde in de reeks wordt met 2 verhoogd. Als de stapgrootte niet is opgegeven, wordt de standaardwaarde 1 gebruikt.

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

Output:

3 5 7 9

Tot nu toe hebben we gezien hoe de functie `range()` de verhoogde waarde geeft voor de opgegeven stopwaarde. Laten we nu eens kijken naar een voorbeeld om de verlaagde waarde binnen het opgegeven bereik te verkrijgen.

De waarden binnen een bereik verhogen met een positieve stap.

De parameter `step` in `range()` kan worden gebruikt om de waarden te verhogen of te verlagen. Standaard is dit een positieve waarde, namelijk 1. Hierdoor worden de waarden altijd verhoogd.

De stapgrootte moet positief zijn als je oplopende waarden als uitvoer wilt.

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

Output:

1 6 11 16 21 26

Reverse Bereik: Waarden verlagen met behulp van negatieve stappen

De parameter `step` met een negatieve waarde in `range()` kan worden gebruikt om verlaagde waarden te verkrijgen. In het onderstaande voorbeeld is de waarde van `step` negatief, waardoor de uitvoer wordt verlaagd ten opzichte van de opgegeven `range`-waarde.

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

Output:

15 14 13 12 11 10 9 8 7 6

De startwaarde is 15, de stopwaarde is 5 en de stapgrootte is een negatief getal, namelijk -1. Met deze invoer zal de functie range() de waarde vanaf 15 verlagen tot de stopwaarde, maar het verschil is dat de laatste waarde stop + 1 zal zijn.

Het gebruik van drijvende getallen in Python bereik ()

Laten we nu aan de slag gaan met range() met behulp van drijvende-kommagetallen.

Voorbeeld:

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

In het bovenstaande voorbeeld hebben we de stopwaarde ingesteld op 10.5.

De uitvoer is:

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 Dit geeft een foutmelding omdat de functie range() geen drijvende-komma getallen ondersteunt voor start, stop en stap.

For-loop gebruiken met Python bereik ()

In dit voorbeeld gebruiken we een array met getallen en laten we zien hoe je met behulp van `range()` door de array kunt itereren binnen een `for`-lus.

Voorbeeld:

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

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

Output:

MysqlMongodb PostgreSQL Firebase

In het bovenstaande voorbeeld hebben we len(arr_list) als stopwaarde gebruikt. De for-lus zal itereren tot de stopwaarde, oftewel de lengte van de array, die 4 zal zijn, aangezien arr_list vier items bevat. De startwaarde is 0 en de stapgrootte is 1, dus de waarden beginnen bij 0 en eindigen bij 3, oftewel de lengte van de array min 1, wat betekent dat 4 - 1 = 3.

gebruik Python range() als een lijst

In dit voorbeeld ziet u hoe u de uitvoer van bereik als lijst kunt gebruiken.

Voorbeeld:

print(list(range(10)))

Output:

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

U kunt zien dat de uitvoer een lijstindeling is. Het was niet nodig om de range() te herhalen en met behulp van de list()-methode konden we de uitvoer direct converteren van range- naar lijstformaat.

Tekens gebruiken in Python range()

Tot nu toe hebben we integers gebruikt in python range(). We hebben ook gezien dat floating-point getallen niet worden ondersteund in python range. Laten we eens kijken wat er gebeurt als we characters gebruiken.

Voorbeeld:

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

Er wordt een foutmelding gegeven dat een string niet als een geheel getal kan worden geรฏnterpreteerd.

Om de lijst met alfabetten te krijgen, kunt u de code aanpassen en de gewenste uitvoer krijgen, zoals hieronder weergegeven:

Voorbeeld:

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']

Toegang krijgen tot bereikelementen

U kunt een for-loop gebruiken om de waarden uit het bereik te halen, of u kunt de index gebruiken om toegang te krijgen tot de elementen uit range().

For-loop gebruiken

Voorbeeld:

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

Output:

0
1
2
3
4
5

Index gebruiken

De index wordt gebruikt met bereik om de op die positie beschikbare waarde te verkrijgen. Als de bereikwaarde 5 is, kunt u om de startwaarde te verkrijgen range(5)[0] en de volgende waarde range(5)[1] gebruiken, enzovoort.

Voorbeeld:

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

Lijst() gebruiken

Met deze methode worden alle elementen uit de range() afgedrukt. Met behulp van list() retourneert het de elementen uit range() in lijstformaat.

Voorbeeld:

print(list(range(10)))

Output:

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

Het geeft de lijstuitvoer voor het opgegeven bereik.

Voorbeeld: Even getallen verkrijgen met behulp van range()

Met range() krijg je een lijst met even getallen binnen het opgegeven bereik. De parameters voor range() zijn: start is 2, stop is 20 en step is 2. De waarden worden dus met 2 verhoogd en geven even getallen tot stop-2.

Voorbeeld:

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

Output:

2 4 6 8 10 12 14 16 18

Uitgangen met twee bereiken() samenvoegen

In dit voorbeeld zullen we twee range()-functies samenvoegen met behulp van de chain()-functie uit de itertools-module.

Voorbeeld:

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

Range() gebruiken met NumPy

De NumPy-module heeft een functie genaamd `arange()` die werkt en een vergelijkbare uitvoer geeft als `range()`. De functie `arange()` accepteert dezelfde parameters als `range()`.

Syntax:

arange(start, stop, step)

Om met NumPy te werken, volg je de onderstaande stappen.

Stap 1: NumPy-module importeren

import numpy

Als er tijdens de uitvoering een foutmelding verschijnt dat de NumPy-module niet is gevonden, moet u de module installeren zoals beschreven in stap 2.

Stap 2NumPy installeren

pip install numpy

Stap 3: Werkvoorbeeld van arange() met 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

Vlottendekommagetallen met behulp van NumPy arange()

Het is niet mogelijk om de drijvende-kommareeks te verkrijgen met behulp van `range()`, maar wel met `NumPy arange()`.

Voorbeeld:

Het gewenste bereik is van 0.5 tot 1.5. De waarde wordt met 0.2 verhoogd.

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

De uitvoer die we krijgen is een beetje vreemd; sommige drijvende-komma getallen worden weergegeven met 16 decimalen. Dit komt door de complexiteit van het opslaan van decimale drijvende-komma getallen in binaire vorm. U kunt de waarden indien nodig ook afronden en het aantal decimalen beperken tot het gewenste aantal.

Veelgestelde vragen

In Python 3. `range()` retourneert een lui, onveranderlijk bereikobject, geen lijst. Het genereert getallen op aanvraag. Wikkel het in `list(range(n))` wanneer een daadwerkelijke lijst nodig is. Python 2 gaf een volledige lijst terug.

De stopwaarde is exclusief, zodat range(len(items)) netjes naar nulgebaseerde indexen wordt gecompileerd. Om het eindpunt mee te nemen, tel je รฉรฉn op bij de stopwaarde, bijvoorbeeld range(1, 11) om van 1 tot en met 10 te tellen.

Nee. Het aanroepen van range(0, 10, 0) geeft een ValueError: range() argument 3 mag niet nul zijn, omdat een stapgrootte van nul de eindwaarde nooit zou bereiken en de lus oneindig zou doorlopen. Gebruik in plaats daarvan een positieve of negatieve stapgrootte.

`range()` weigert drijvende-kommagetallen, maar een list comprehension kan gehele getallen schalen: `[x * 0.5 for x in range(0, 6)]` produceert 0.0 tot 2.5. Dit voorkomt het importeren van NumPy en werkt toch stapsgewijs.ping via decimale waarden.

Ja. Een range-object slaat alleen de start-, stop- en stapwaarden op, dus range(1000000) gebruikt dezelfde kleine, constante hoeveelheid geheugen als range(10). De waarden worden รฉรฉn voor รฉรฉn berekend tijdens de iteratie.

Gebruik de operator 'in': 5 in range(0, 10) retourneert True. Voor bereikobjecten, Python Deze lidmaatschapstest wordt uitgevoerd met snelle rekenkundige bewerkingen in constante tijd in plaats van elk element te scannen, waardoor de efficiรซntie ook bij zeer grote bereiken behouden blijft.

Machine learning-code gebruikt `range()` om trainingsepochs te doorlopen, mini-batches te itereren en hyperparametergrids op te bouwen. NumPy `arange()` en `linspace()` breiden dit uit naar drijvende-komma-bereiken voor leerfrequentieschema's en drempelwaarde-sweeps die vaak voorkomen in AI-experimenten.

Ja. AI-codeerassistenten zoals GitHub Copilot vullen automatisch lussen op basis van `range()` aan vanuit een opmerking of functienaam, en tools voor AI kunnen indexlussen omzetten in nettere `enumerate()`- of `comprehension`-patronen, hoewel de gegenereerde grenzen nog wel even gecontroleerd moeten worden.

Vat dit bericht samen met: