Python's range()-functie onder de knie: van basis tot geavanceerde use cases
Wat is Python range?
Python's range() is een ingebouwde generator die een reeks integers produceert op basis van een start, stop en optionele stap. Als de startwaarde wordt weggelaten, is deze standaard 0, en de reeks incrementeert met 1 totdat de stopwaarde (exclusief) bereikt is. Bijvoorbeeld, range(5) levert 0, 1, 2, 3, 4. De functie is onmisbaar bij het itereren met for-lussen.
In deze tutorial leer je:
- Definitie en syntaxis van
range() - Geschiedenis:
range()vs.xrange() - Hoe
range()te gebruiken met start, stop en stap - Incrementele en decrementele ranges
- Omgaan met floating-point limieten en alternatieven
range()gebruiken met lijsten, arrays en NumPy'sarange()- Geavanceerde patronen: ranges samenvoegen, even getallen extraheren, alfabetische reeksen genereren
Syntaxis
range(start, stop, step)
Parameters
- start (optioneel): Het eerste integer in de reeks. Standaard 0 als weggelaten.
- stop (verplicht): De bovengrens (exclusief). De reeks stopt voor deze waarde.
- step (optioneel): Het interval opeenvolgende waarden. Standaard 1.
Return-waarde
Retourneert een range-object, dat zich gedraagt als een onveranderlijke reeks integers. Wanneer geconverteerd naar een lijst, toont het de volledige reeks.
Python range()-functie en geschiedenis
Geïntroduceerd in Python 3, verving range() de oudere xrange() uit Python 2. De belangrijkste verschillen:
| range() | xrange() |
|---|---|
| Retourneert een onveranderlijke reeks getallen. | Retourneert een generator-object. |
| Verbruikt geheugen proportioneel aan de lengte. | Minimaal geheugen; genereert waarden lui. |
| Geschikt voor kleine tot middelgrote ranges. | Voorkeur voor grote ranges of oneindige reeksen. |
| Trager op zeer grote ranges door geheugentoewijzing. | Sneller bij itereren over grote ranges. |
range() gebruiken
Basismethode die getallen 0 tot 9 print:
for i in range(10):
print(i, end=" ")
Output:
0 1 2 3 4 5 6 7 8 9
Start en stop in range()
Een startwaarde specificeren verschuift de reeks:
for i in range(3, 10):
print(i, end=" ")
Output:
3 4 5 6 7 8 9
Start, stop en step
Met een stap controleer je het interval tussen getallen:
for i in range(3, 10, 2):
print(i, end=" ")
Output:
3 5 7 9
Waarden incrementeren met een positieve stap
De standaard stap is 1, maar je kunt elke positieve integer opgeven:
for i in range(1, 30, 5):
print(i, end=" ")
Output:
1 6 11 16 21 26
Omgekeerde range: decrementeren met negatieve stap
Een negatieve stap creëert een dalende reeks:
for i in range(15, 5, -1):
print(i, end=" ")
Output:
15 14 13 12 11 10 9 8 7 6
Floating-point getallen in Python range()
De ingebouwde range() accepteert alleen integers. Een float doorgeven levert een TypeError:
for i in range(10.5):
print(i, end=" ")
Output:
Traceback (most recent call last): File "python_range.py", line 1, infor i in range(10.5): TypeError: 'float' object cannot be interpreted as an integer
For-lus met Python range()
Range wordt vaak gecombineerd met len() om over lijstindices te itereren:
arr_lijst = ['MySQL', 'MongoDB', 'PostgreSQL', 'Firebase']
for i in range(len(arr_lijst)):
print(arr_lijst[i], end=" ")
Output:
MySQL MongoDB PostgreSQL Firebase
Python range() als lijst
Een range omzetten naar een lijst is eenvoudig:
print(list(range(10)))
Output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Karakteren in Python range()
Hoewel range() alleen met integers werkt, kun je alfabetische reeksen genereren door karakters om te zetten naar Unicode-codepunten:
def krijg_alfabet(startletter, stopletter, stap):
for c in range(ord(startletter.lower()), ord(stopletter.lower()), stap):
yield chr(c)
print(list(krijg_alfabet("a", "h", 1)))
Output:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Hoe range-elementen te benaderen
Je kunt waarden ophalen via iteratie, indexing of conversie naar een lijst:
Iteratie
for i in range(6):
print(i)
Output:
0 1 2 3 4 5
Indexering
eerste = range(5)[0]
print("Het eerste element in range is = ", eerste)
tweede = range(5)[1]
print("Het tweede element in range is = ", tweede)
laatste = range(5)[-1]
print("Het laatste element in range is = ", laatste)
Output:
Het eerste element in range is = 0 Het tweede element in range is = 1 Het laatste element in range is = 4
list() gebruiken
print(list(range(10)))
Output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Voorbeeld: Even getallen met range()
Even getallen tot 18 genereren:
for i in range(2, 20, 2):
print(i, end=" ")
Output:
2 4 6 8 10 12 14 16 18
Twee range()-outputs samenvoegen
Twee range-objecten combineren kan met itertools.chain:
from itertools import chain
print("Twee ranges samenvoegen")
samengevoegd = chain(range(10), range(10, 20, 1))
for i in samengevoegd:
print(i, end=" ")
Output:
Twee ranges samenvoegen 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
range() met NumPy
NumPy's arange() is vergelijkbaar met range() maar ondersteunt floating-point stappen:
Syntaxis
arange(start, stop, step)
Voorbeeld
import numpy as np
for i in np.arange(10):
print(i, end=" ")
Output:
0 1 2 3 4 5 6 7 8 9
Floating-point range met NumPy
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
Omdat floating-point rekenkunde binair is, toont de output soms lange decimale uitbreidingen. Je kunt de waarden zo nodig afronden.
Samenvatting
- range() genereert een integer-reeks gedefinieerd door start, stop en stap.
- Geïntroduceerd in Python 3; xrange() was de voorganger in Python 2.
- Gebruik een positieve stap voor oplopende reeksen, negatieve voor aflopende.
- Floating-point getallen worden niet ondersteund; gebruik NumPy arange() voor floats.
- Elementen benaderen via iteratie, indexing of
list()-conversie. - Ranges combineren met
itertools.chainof aangepaste reeksen als alfabet genereren. - Voor grote numerieke ranges, overweeg generator-gedrag voor geheugenefficiëntie.
Python
- Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
- Python Lambda Functies: Een praktische gids voor anonieme functies
- Python-generators: efficiënte iteratie en geavanceerde use cases
- Python-closures uitgelegd: hoe geneste functies variabelen vangen
- Python lambda-functies beheersen: praktische voorbeelden & best practices
- Python abs()-functie: absolute waarden berekenen voor getallen & complexe getallen
- Python round()-functie uitgelegd met praktische voorbeelden
- Python's range()-functie onder de knie: van basis tot geavanceerde use cases
- Python's map()-functie beheersen: syntaxis, voorbeelden en best practices
- Python's enumerate() meesteren: lussen met indices voor lijsten, tuples, strings en dictionaries
- Python list.count(): Expert Gids met Praktische Voorbeelden