Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

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's arange()
  • 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, in 
    for 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.chain of aangepaste reeksen als alfabet genereren.
  • Voor grote numerieke ranges, overweeg generator-gedrag voor geheugenefficiëntie.

Python

  1. Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
  2. Python Lambda Functies: Een praktische gids voor anonieme functies
  3. Python-generators: efficiënte iteratie en geavanceerde use cases
  4. Python-closures uitgelegd: hoe geneste functies variabelen vangen
  5. Python lambda-functies beheersen: praktische voorbeelden & best practices
  6. Python abs()-functie: absolute waarden berekenen voor getallen & complexe getallen
  7. Python round()-functie uitgelegd met praktische voorbeelden
  8. Python's range()-functie onder de knie: van basis tot geavanceerde use cases
  9. Python's map()-functie beheersen: syntaxis, voorbeelden en best practices
  10. Python's enumerate() meesteren: lussen met indices voor lijsten, tuples, strings en dictionaries
  11. Python list.count(): Expert Gids met Praktische Voorbeelden