Wat is Python-bereik?
Python range () is een ingebouwde functie die beschikbaar is met Python van Python (3.x), en het geeft een reeks getallen op basis van de gegeven start- en stopindex. Als de startindex niet wordt gegeven, wordt de index beschouwd als 0 en wordt de waarde verhoogd met 1 tot de stopindex.
Bereik (5) zal bijvoorbeeld je waarden 0,1,2,3,4 uitvoeren. Het Python-bereik () is een erg handig commando en wordt meestal gebruikt wanneer je moet herhalen met for-lus.
In deze tutorial leer je:
- Wat is Python-bereik?
- Syntaxis
- Python range () Functie en geschiedenis
- Bereik gebruiken ()
- Start en stop gebruiken binnen bereik ()
- Gebruik start, stop en stap
- De waarden binnen bereik verhogen met een positieve stap.
- Omgekeerd bereik: de waarden verlagen met een negatieve stap.
- Zwevende getallen gebruiken in Python-bereik ()
- For-loop gebruiken met Python range ()
- Python range () gebruiken als een lijst
- Tekens gebruiken in python-bereik ()
- Toegang krijgen tot bereikelementen
- Voorbeeld: haal even getallen op met bereik ()
- Uitgangen met twee bereiken () samenvoegen
- Range () gebruiken met NumPy
Syntaxis
range(start, stop, step)
Parameters
- start: (optioneel) De startindex is een geheel getal en als deze niet wordt opgegeven, is de standaardwaarde 0.
- stop: De stopindex bepaalt de waarde waarop de bereikfunctie moet stoppen. Het is een verplichte invoer voor de bereikfunctie. De laatste waarde is altijd 1 minder dan de stopwaarde.
- stap: (optioneel) De stapwaarde is het nummer waarmee het volgende nummer het bereik moet worden verhoogd, standaard is dit 1.
Winstwaarde:
De geretourneerde waarde is een reeks getallen vanaf de opgegeven start-tot-stop-index.
Python range () Functie en geschiedenis
Python range () is geïntroduceerd vanaf python versie 3, daarvoor was xrange () de functie.
Zowel bereik als xrange () worden gebruikt om een reeks getallen te produceren.
Hieronder volgen het verschil tussen bereik en xrange ():
bereik () | xrange () |
Het bereik () geeft de reeks getallen en retourneert een lijst met getallen. | De functie xrange () geeft een generatorobject dat in een for-lus moet worden gelust om de waarden te krijgen. |
Het bereik () retourneert een lijst. | xrange () geeft een generatorobject terug. |
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 for-loop worden gebruikt om de waarden te krijgen. |
Het geheugengebruik is meer, daarom is de uitvoering van de code traag bij het werken aan een enorme set gegevens. | De uitvoering van de code is sneller met xrange (). |
Bereik gebruiken ()
Dit voorbeeld laat zien hoe u de waarden van 0-9 afdrukt met bereik ().
De waarde die wordt gebruikt in bereik is 10, dus de uitvoer is 0 1 2 3 4 5 6 7 8 9
Aangezien de start niet wordt gegeven, wordt de start beschouwd als 0 en wordt de laatste waarde gegeven tot 9. De laatste waarde is altijd 1 minder dan de opgegeven waarde, dwz stop-1.
for i in range(10):print(i, end =" ")
Uitgang:
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. Hier is de startindex 3, dus de reeks getallen begint bij 3 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 =" ")
Uitgang:
3 4 5 6 7 8 9
Gebruik start, stop en stap
De startwaarde is 3, dus de reeks getallen begint bij 3. De stopwaarde is 10, dus de reeks getallen stopt bij (10-1), dwz 9. De stap is 2, dus elke waarde in de reeks zal worden verhoogd met 2. Als de stapwaarde niet wordt opgegeven, wordt de waarde voor stap standaard 1.
for i in range(3, 10, 2):print(i, end =" ")
Uitgang:
3 5 7 9
Tot nu toe hebben we gezien hoe de functie range () de verhoogde waarde geeft voor de gegeven stopwaarde. Laten we nu een voorbeeld proberen om de verlaagde waarde in het opgegeven bereik te krijgen.
De waarden binnen bereik verhogen met een positieve stap.
De parameterstap in bereik () kan worden gebruikt om de waarden te verhogen / verlagen. Standaard is het een positieve waarde 1. Het geeft dus altijd verhoogde waarden.
De stapwaarde moet positief zijn voor het geval u verhoogde waarden als output wilt.
for i in range(1, 30, 5):print(i, end =" ")
Uitgang:
1 6 11 16 21 26
Omgekeerd bereik: de waarden verlagen met een negatieve stap.
De parameterstap met een negatieve waarde in bereik () kan worden gebruikt om verlaagde waarden te krijgen. In het onderstaande voorbeeld is de stapwaarde negatief, dus de uitvoer wordt verlaagd vanaf de opgegeven bereikwaarde.
for i in range(15, 5, -1):print(i, end =" ")
Uitgang:
15 14 13 12 11 10 9 8 7 6
De startwaarde is 15, de stopwaarde is 5 en de stapwaarde is een negatief getal, dwz -1. Met bovenstaande ingangen zal de range () functie de waarde verlagen vanaf 15 tot het de stopwaarde bereikt, maar hier is het verschil dat de laatste waarde stop + 1 is.
Zwevende getallen gebruiken in Python-bereik ()
Laten we nu aan het bereik () werken met getallen met drijvende komma.
Voorbeeld:
for i in range(10.5):print(i, end =" ")
In het bovenstaande voorbeeld hebben we de stopwaarde gebruikt als 10,5.
De output is:
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
Python geeft een foutmelding omdat de functie range () geen drijvende-kommagetallen ondersteunt voor start, stop en step.
For-loop gebruiken met Python range ()
In dit voorbeeld zullen we een array met getallen gebruiken en laten we zien hoe we de array binnen for-loop itereren met range ()
Voorbeeld:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']for i in range(len(arr_list)):print(arr_list[i], end =" ")
Uitgang:
MysqlMongodb PostgreSQL Firebase
In het bovenstaande voorbeeld hebben we len (arr_list) als stopwaarde gebruikt. De for-lus zal itereren tot de stopwaarde, dwz de lengte van de array en dat zal 4 zijn, aangezien we vier items in de arr_list hebben. De startwaarde is 0 en de stap is 1. Dus de waarden beginnen bij 0 en stoppen bij 3, dwz lengte van array -1, wat betekent 4 -1 = 3.
Python range () gebruiken als een lijst
In dit voorbeeld ziet u hoe u de uitvoer van bereik als lijst kunt gebruiken.
Voorbeeld:
print(list(range(10)))
Uitgang:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
U kunt zien dat de uitvoer een lijstindeling is. Het was niet nodig om het bereik () te herhalen en met de methode list () konden we de uitvoer direct van bereik naar lijstformaat converteren.
Tekens gebruiken in python-bereik ()
Tot nu toe hebben we gehele getallen gebruikt in python-bereik (). We hebben ook gezien dat getallen met drijvende komma niet worden ondersteund in het bereik van Python. Laten we proberen de uitvoer te zien van wat er gebeurt als we tekens gebruiken.
Voorbeeld:
for c in range ('z'):print(c, end =" ")
Uitgang:
Traceback (most recent call last):File "python_range.py", line 1, infor c in range ('z'):TypeError: 'str' object cannot be interpreted as an integer
Het genereert een fout die zegt 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 wordt 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)))
Uitgang:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Toegang krijgen tot bereikelementen
U kunt een for-lus gebruiken om de waarden uit het bereik te krijgen of de index gebruiken om toegang te krijgen tot de elementen uit bereik ().
For-loop gebruiken
Voorbeeld:
for i in range(6):print(i)
Uitgang:
012345
Met behulp van index
De index wordt gebruikt met bereik om de waarde te krijgen die op die positie beschikbaar is. Als de bereikwaarde 5 is, kunt u, om de startwaarde te krijgen, bereik (5) [0] en het volgende waardebereik (5) [1] enzovoort gebruiken.
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)
Uitgang:
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)
Met behulp van lijst ()
Met deze methode worden alle elementen uit het bereik () afgedrukt. Door list () te gebruiken, worden de elementen uit bereik () in lijstformaat geretourneerd.
Voorbeeld:
print(list(range(10)))
Uitgang:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Het geeft de lijstuitvoer voor het opgegeven bereik.
Voorbeeld: haal even getallen op met bereik ()
Als u bereik () gebruikt, krijgt u de lijst met even getallen in het bereik dat als invoer is opgegeven. De parameters voor bereik () zijn: start is 2, stop is 20 en stap is 2, dus de waarden worden met 2 verhoogd en geven even nummers tot stop-2.
Voorbeeld:
for i in range(2, 20, 2):print(i, end =" ")
Uitgang:
2 4 6 8 10 12 14 16 18
Uitgangen met twee bereiken () samenvoegen
In dit voorbeeld worden 2 range () -functies aaneengeschakeld met behulp van de itertools module chain () -functie.
Voorbeeld:
from itertools import chainprint("Merging two range into one")frange =chain(range(10), range(10, 20, 1))for i in frange:print(i, end=" ")
Uitgang:
Merging two range into one0 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 de functie arange () die werkt en geeft vergelijkbare uitvoer als range (). Het arrangement () heeft dezelfde parameters als range ().
Syntaxis:
arange(start, stop, step)
Volg de onderstaande stappen om met NumPy te werken.
Stap 1 : NumPy-module importeren
import numpy
In het geval van uitvoering, geeft het een foutmelding met de melding numpy module not found, u moet de module installeren zoals weergegeven in stap 2.
Stap 2 : installeer NumPy
pip install numpy
Stap 3 : Werkvoorbeeld van arange () met NumPy
import numpy as npfor i in np.arange(10):print(i, end =" ")
Uitgang:
0 1 2 3 4 5 6 7 8 9
Drijvende-kommagetallen met behulp van NumPy arange ()
Het is niet mogelijk om de drijvende-komma-reeks op te halen met range (), maar het is wel mogelijk met NumPy arange ().
Voorbeeld:
Het bereik dat we willen is van 0,5 tot 1,5. De waarde wordt met 0,2 verhoogd.
import numpy as npfor i in np.arange(0.5, 1.5, 0.2):print(i, end =" ")
Uitgang:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
De uitvoer die we krijgen is een beetje raar, sommige van de drijvende-kommagetallen worden weergegeven met 16 decimalen. Dit gebeurt vanwege de complexiteit van het opslaan van decimale drijvende getallen in binair formaat. U kunt de waarden indien nodig ook afronden en ze beperken tot de decimalen die u nodig heeft.
Overzicht:
- Python range () is een ingebouwde functie die beschikbaar is met Python van Python (3.x), en het geeft een reeks getallen op basis van de gegeven start- en stopindex. Als de startindex niet wordt gegeven, wordt de index beschouwd als 0 en wordt de waarde verhoogd tot de stopindex.
- Python range () is geïntroduceerd vanaf python versie 3, daarvoor was xrange () de functie.
- Het bereik () geeft de reeks getallen en retourneert een lijst met getallen. De functie xrange () geeft een generatorobject dat in een for-lus moet worden gelust om de waarden te krijgen.
- De parameterstap in bereik () kan worden gebruikt om de waarden te verhogen / verlagen. Standaard is het een positieve waarde 1. Het geeft dus altijd verhoogde waarden.
- Python geeft een foutmelding voor getallen met drijvende komma, aangezien de functie range () alleen gehele getallen ondersteunt.
- De waarden van range () zijn toegankelijk met for-loop, met index en list ()
- De NumPy-module heeft de functie arange () die werkt en geeft vergelijkbare uitvoer als range (). De arange () neemt dezelfde parameters op als range ().
- Het is mogelijk om de drijvende-komma-reeks NumPy arange () op te halen die niet wordt ondersteund met range ().