Python range() Funktio: Float, List, For loop Esimerkkejä
Mikä on Python Alue?
Python range() on sisäänrakennettu toiminto, joka on saatavana Python alkaen Python(3.x), ja se antaa numerosarjan annettujen aloitus- ja lopetusindeksien perusteella. Jos aloitusindeksiä ei anneta, indeksin katsotaan olevan 0, ja se kasvattaa arvoa 1:llä lopetusindeksiin asti.
Esimerkiksi range(5) tulostaa sinulle arvot 0,1,2,3,4 .The Python range() on erittäin hyödyllinen komento, ja sitä käytetään enimmäkseen, kun sinun on iteroitava for-silmukalla.
Syntaksi
range(start, stop, step)
parametrit
- alkaa: (valinnainen) Alkuindeksi on kokonaisluku, ja jos sitä ei ole annettu, oletusarvo on 0.
- Stop: Pysäytysindeksi määrittää arvon, johon aluefunktion on pysähdyttävä. Se on pakollinen syöte aluefunktioon. Viimeinen arvo on aina 1 pienempi kuin pysäytysarvo.
- vaihe: (valinnainen). Askelarvo on numero, jolla seuraavaa alueen lukua on lisättävä, oletusarvoisesti se on 1.
Palautusarvo
Paluuarvo on numerosarja annetusta alusta lopetusindeksistä.
Python range() Funktio ja historia
Python range() on otettu käyttöön python-versiosta 3, ennen sitä xrange() oli funktio.
Sekä aluetta että xrange():ta käytetään numerosarjan tuottamiseen.
Seuraavassa on ero rangen ja xrange() välillä:
alue () | xrange() |
---|---|
Alue() antaa numerosarjan ja palauttaa numeroluettelon. | Funktio xrange() antaa generaattoriobjektin, joka on silmukattava for-silmukassa arvojen saamiseksi. |
Range() palauttaa luettelon. | xrange() palauttaa generaattoriobjektin. |
Range()-menetelmä käyttää enemmän muistia, koska palautettu lista on tallennettava verrattuna xrange()-menetelmään. | Koska xrange() palauttaa generaattoriobjektin, se ei anna arvoja välittömästi ja sitä on käytettävä for-silmukassa arvojen saamiseksi. |
Muistin käyttö on enemmän, joten koodin suoritus on hidasta, kun työskentelet valtavan datajoukon parissa. | Koodin suoritus on nopeampaa käyttämällä xrange(). |
Käytä range()
Tämä esimerkki näyttää, kuinka arvot väliltä 0-9 tulostetaan käyttämällä range().
Alueella käytetty arvo on 10, joten lähtö on 0 1 2 3 4 5 6 7 8 9
Koska aloitusta ei anneta, aloitus on 0 ja viimeinen arvo annetaan 9 asti. Viimeinen arvo on aina 1 pienempi kuin annettu arvo eli stop-1.
for i in range(10): print(i, end =" ")
lähtö:
0 1 2 3 4 5 6 7 8 9
Käytetään aloitus- ja lopetusalue()
Koodissa aloitusarvo on 3 ja lopetusarvo on 10. Tässä aloitusindeksi on 3, joten numerosarja alkaa 3:sta lopetusarvoon. Sarjan viimeinen arvo on 1 pienempi kuin pysäytysarvo 10-1 = 9.
for i in range(3, 10): print(i, end =" ")
lähtö:
3 4 5 6 7 8 9
Käytetään käynnistystä, pysäytystä ja askelta
Alkuarvo on 3, joten numerosarja alkaa numerosta 3. Lopetusarvo on 10, joten numerosarja pysähtyy kohtaan (10-1) eli 9. Vaihe on 2, joten sarjan jokainen arvo lisätään 2:lla. Jos askelarvoa ei anneta, askeleen arvo on oletusarvo 1.
for i in range(3, 10, 2): print(i, end =" ")
lähtö:
3 5 7 9
Tähän mennessä olemme nähneet kuinka range()-funktio antaa lisätyn arvon annetulle stop-arvolle. Kokeillaan nyt esimerkkiä saadaksesi pienennetty arvo annetulla alueella.
Arvojen kasvattaminen alueella positiivisella askeleella.
Parametriaskel range():ssä voidaan lisätä/vähentää arvoja. Oletuksena se on positiivinen arvo 1. Joten se antaa aina lisättyjä arvoja.
Askelarvon on oltava positiivinen, jos haluat lisätä arvoja tulosteena.
for i in range(1, 30, 5): print(i, end =" ")
lähtö:
1 6 11 16 21 26
Reverse Range: Arvojen vähentäminen negatiivisella askeleella
Parametriaskelta negatiivisella arvolla alueella() voidaan käyttää pienennettyjen arvojen saamiseksi. Alla olevassa esimerkissä askelarvo on negatiivinen, joten lähtöä pienennetään annetusta alueen arvosta.
for i in range(15, 5, -1): print(i, end =" ")
lähtö:
15 14 13 12 11 10 9 8 7 6
Aloitusarvo on 15, lopetusarvo on 5 ja askelarvo on negatiivinen luku eli -1. Yllä olevilla syötteillä range()-funktio pienentää arvoa 15:stä eteenpäin, kunnes se saavuttaa pysäytysarvon, mutta tässä ero on viimeinen arvo stop + 1.
Käytä kelluvia lukuja Python alue ()
Tehdään nyt työtä range() kanssa liukulukujen avulla.
Esimerkiksi:
for i in range(10.5): print(i, end =" ")
Yllä olevassa esimerkissä olemme käyttäneet pysäytysarvoa 10.5.
Lähtö on:
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 antaa virheen, koska range()-funktio ei tue liukulukuja aloitukselle, lopetukselle ja askeleelle.
For-silmukan käyttäminen kanssa Python alue ()
Tässä esimerkissä käytämme lukujonoa ja katsotaan kuinka käyttää taulukon iterointia for-silmukan sisällä käyttämällä range()
Esimerkiksi:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase'] for i in range(len(arr_list)): print(arr_list[i], end =" ")
lähtö:
MysqlMongodb PostgreSQL Firebase
Yllä olevassa esimerkissä olemme käyttäneet len(arr_list) stop-arvona. For-silmukka toistuu stop-arvoon eli taulukon pituuteen asti ja se on 4, koska arr_listissa on neljä kohdetta. Alkuarvo on 0 ja askel on 1. Joten arvot alkavat 0:sta ja päättyvät 3:een eli taulukon pituuteen -1 eli 4 -1 = 3.
Käyttäminen Python range() luettelona
Tässä esimerkissä nähdään, kuinka alueen tulostetta käytetään luettelona.
Esimerkiksi:
print(list(range(10)))
lähtö:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Näet, että tulos on luettelomuodossa. Range()-silmukkaa ei tarvinnut ja käyttämällä list()-menetelmää pystyimme muuttamaan tulosteen suoraan alueesta listamuotoon.
Python range() -merkkien käyttäminen
Toistaiseksi olemme käyttäneet kokonaislukuja python range(). Olemme myös nähneet, että liukulukuja ei tueta python-alueella. Yritetään nähdä tulos siitä, mitä tapahtuu, kun käytämme merkkejä.
Esimerkiksi:
for c in range ('z'): print(c, end =" ")
lähtö:
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
Se antaa virheilmoituksen, jonka mukaan merkkijonoa ei voida tulkita kokonaislukuna.
Saadaksesi luettelon aakkosista voit mukauttaa koodia ja saada haluamasi tulosteet alla olevan kuvan mukaisesti:
Esimerkiksi:
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)))
lähtö:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Kuinka käyttää Range Elements
Voit käyttää for-silmukkaa saadaksesi arvot alueelta tai käyttää indeksiä päästäksesi elementit alueesta().
For-silmukan käyttö
Esimerkiksi:
for i in range(6): print(i)
lähtö:
0 1 2 3 4 5
Indeksin käyttö
Indeksiä käytetään alueen kanssa saadakseen kyseisessä paikassa käytettävissä olevan arvon. Jos alueen arvo on 5, voit saada aloitusarvon käyttämällä alue(5)[0] ja seuraavaa arvoaluetta(5)[1] ja niin edelleen.
Esimerkiksi:
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)
lähtö:
The first element in range is = 0 The second element in range is = 1 The first element in range is = 4
Listan() käyttö
Tämä menetelmä tulostaa kaikki elementit alueesta(). List():n avulla se palauttaa elementit alueesta() listamuodossa.
Esimerkiksi:
print(list(range(10)))
lähtö:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Se antaa luettelotulosteen annetulle alueelle.
Esimerkki: Hanki parilliset luvut käyttämällä range()
Range()-komennolla saadaan lista parillisista luvuista syötteenä annetulla alueella. Range()-parametrit ovat: start on 2, stop on 20 ja step on 2, joten arvoja kasvatetaan 2:lla ja ne antavat parillisia numeroita stop-2:een asti.
Esimerkiksi:
for i in range(2, 20, 2): print(i, end =" ")
lähtö:
2 4 6 8 10 12 14 16 18
Kahden alueen()-ulostulojen yhdistäminen
Tässä esimerkissä ketjuttaa 2 range()-funktiota itertools module chain()-funktion avulla.
Esimerkiksi:
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=" ")
lähtö:
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
Käytä range() NumPy:n kanssa
NumPy-moduulissa on arange()-funktio, joka toimii ja antaa samanlaisen tulosteen kuin range(). Arrange() ottaa samat parametrit kuin range().
Syntaksi:
arange(start, stop, step)
Työskentele NumPyn kanssa noudattamalla alla olevia ohjeita.
Vaihe 1: Tuo NumPy-moduuli
import numpy
Jos suorituksen aikana tulee virheilmoitus, jossa sanotaan, että numpy-moduulia ei löydy, sinun on asennettava moduuli vaiheessa 2 esitetyllä tavalla.
Vaihe 2: Asenna NumPy
pip install numpy
Vaihe 3: Toimiva esimerkki arange():sta NumPy:n avulla
import numpy as np for i in np.arange(10): print(i, end =" ")
lähtö:
0 1 2 3 4 5 6 7 8 9
Liukulukuluvut käyttämällä NumPy arange()
Liukulukujonoa ei voi saada käyttämällä range()-komentoa, mutta se on mahdollista NumPy arange(:lla).
Esimerkiksi:
Haluamamme alue on 0.5 - 1.5. Arvo kasvaa 0.2:lla.
import numpy as np for i in np.arange(0.5, 1.5, 0.2): print(i, end =" ")
lähtö:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
Saamamme tulos on hieman outo, jotkut float-luvut näytetään 16 desimaalin tarkkuudella. Tämä johtuu siitä, että desimaalilukujen tallentaminen binäärimuotoon on monimutkaista. Voit myös pyöristää arvot tarvittaessa ja rajoittaa ne tarvittaviin desimaaleihin.
Yhteenveto
- Python range() on sisäänrakennettu toiminto, joka on saatavana Python alkaen Python(3.x), ja se antaa numerosarjan annettujen aloitus- ja lopetusindeksien perusteella. Jos aloitusindeksiä ei anneta, indeksin katsotaan olevan 0, ja se kasvattaa arvoa lopetusindeksiin asti.
- Python range() on otettu käyttöön alkaen Python versio 3, ennen sitä xrange() oli funktio.
- Alue() antaa numerosarjan ja palauttaa numeroluettelon. Funktio xrange() antaa generaattoriobjektin, joka on silmukattava for-silmukassa arvojen saamiseksi.
- Parametriaskel range():ssä voidaan lisätä/vähentää arvoja. Oletuksena se on positiivinen arvo 1. Joten se antaa aina lisättyjä arvoja.
- Python antaa virheen liukulukuille, koska range()-funktio tukee vain kokonaislukuarvoja.
- Alue()-arvoihin pääsee käsiksi käyttämällä for-loop-komentoa, käyttämällä indeksiä ja list()
- NumPy-moduulissa on arange()-funktio, joka toimii ja antaa samanlaisen tulosteen kuin range(). Arange() ottaa samat parametrit kuin range().
- On mahdollista saada liukulukusekvenssi NumPy arange(), jota ei tueta range()-toiminnolla.