Python range() Funktio: Float, List, For loop Esimerkkejä

⚡ Älykäs yhteenveto

Python range() on sisäänrakennettu funktio, joka luo muuttumattoman kokonaislukujonon aloitusarvosta lopetusarvoon asti, mutta sitä lukuun ottamatta, käyttäen valinnaista askelta lisäyksen ohjaamiseen.

  • 🔘 Syntaksi: range(aloitus, lopetus, askel) hyväksyy enintään kolme kokonaislukuargumenttia, joissa aloitus on oletusarvoisesti 0 ja askel on oletusarvoisesti 1.
  • ☑️ Yksinomainen pysähdyspaikka: Sarja pysähtyy aina yhden arvon verran ennen lopetusindeksiä, joten range(5) antaa tulokseksi 0–4.
  • Askellusohjaus: Positiivinen askel kasvattaa arvoja, kun taas negatiivinen askel laskee taaksepäin käänteisellä alueella.
  • 🧪 Tyyppirajoitukset: Vain kokonaisluvut hyväksytään, joten liukuluku- tai merkkijonoargumentit aiheuttavat TypeError-virheen.
  • 🛠️ NumPy-liukuluvut: NumPy-arange()-funktio laajentaa range()-funktion toimintaa liukulukusekvensseihin.
  • 🤖 Tekoälyn työnkulut: Koneoppimiskoodi käyttää range()-funktiota harjoitusjaksojen, mini-erien ja hyperparametriruudukoiden iteroimiseen.

Python range()-funktio

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) antaa tulokseksi arvot 0, 1, 2, 3 ja 4. The Python range() on erittäin hyödyllinen komento ja sitä käytetään enimmäkseen silloin, kun sinun on iteroitava käyttämällä silmukalle.

Syntaksi

range()-funktion syntaksi on esitetty alla:

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 range-funktion on pysähdyttävä. Se on pakollinen syöte range-funktiolle. Viimeinen arvo on aina 1 pienempi kuin pysäytysarvo.
  • vaihe: (valinnainen) Askeleen arvo on luku, jolla seuraavaa alueen lukua on kasvatettava; oletusarvoisesti se on 1.

Palautusarvo

Paluuarvo on numerosarja annetusta alusta lopetusindeksistä.

Python range() Funktio ja historia

Python range() on otettu käyttöön alkaen Python versio 3; ennen sitä funktiona käytettiin xrange().

Sekä range()- että xrange()-funktioita käytetään numerosarjan luomiseen.

Seuraavat ovat range():n ja xrange():n väliset erot:

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-silmukan sisällä arvojen saamiseksi.
Muistin käyttö on suurempaa, joten koodin suoritus on hidasta työskenneltäessä valtavan tietomäärän 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 tuloste on 0 1 2 3 4 5 6 7 8 9.

Koska alkua ei ole annettu, alkuarvoksi katsotaan 0 ja viimeinen arvo annetaan lukuun 9 asti. Viimeinen arvo on aina 1 pienempi kuin annettu arvo, eli loppuarvo-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 luvusta 3 lopetusarvoon asti. Sarjan viimeinen arvo on 1 pienempi kuin lopetusarvo, 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

Aloitusarvo on 3, joten numerosarja alkaa luvusta 3. Loppuarvo on 10, joten numerosarja pysähtyy lukuun (10-1) eli lukuun 9. Askel on 2, joten jokaista numerosarjan arvoa kasvatetaan kahdella. Jos askeleen arvoa ei anneta, askeleen arvoksi 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 annetun lopetusarvon kasvatetun arvon. Yritetään nyt esimerkkiä annetun alueen pienennetyn arvon löytämiseksi.

Alueen arvojen kasvattaminen positiivisella askeleella

range()-funktion parametria step voidaan käyttää arvojen kasvattamiseen tai vähentämiseen. Oletusarvoisesti se on positiivinen arvo, 1. Joten se antaa aina kasvavia arvoja.

Askeleen arvon on oltava positiivinen, jos haluat tulosteeksi kasvavia arvoja.

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

lähtö:

1 6 11 16 21 26

Reverse Alue: Arvojen pienentäminen negatiivisella askeleella

Lähtöalueen step-parametria negatiivisella arvolla voidaan käyttää dekrementoitujen arvojen hakemiseen. Alla olevassa esimerkissä askeleen arvo on negatiivinen, joten tuloste dekrementoidaan annetusta aluearvosta.

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 askellusarvo on negatiivinen luku, eli -1. Yllä olevilla syötteillä range()-funktio vähentää arvoa luvusta 15 eteenpäin, kunnes se saavuttaa lopetusarvon, mutta tässä ero on se, että viimeinen arvo on lopetus + 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.

Tuotos 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 aloitus-, lopetus- ja askellusfunktioille.

For-silmukan käyttäminen kanssa Python alue ()

Tässä esimerkissä käytämme lukutaulukkoa ja katsomme, miten taulukkoa iteroidaan for-silmukan sisällä range()-funktion avulla.

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)-funktiota lopetusarvona. For-silmukka iteroi lopetusarvoon eli taulukon pituuteen, joka on 4, koska arr_list-luettelossa on neljä alkiota. Aloitusarvo on 0 ja askel on 1, joten arvot alkavat luvusta 0 ja pysähtyvät lukuun 3, eli taulukon pituus on -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()

Funktion range() käyttäminen hakee syötteenä annetun välin parillisten lukujen listan. Funktion range() parametrit ovat: alkuarvo on 2, loppuarvo on 20 ja askelarvo on 2, joten arvoja kasvatetaan kahdella ja saadaan parillisia lukuja 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ä yhdistämme kaksi range()-funktiota itertools-moduulin 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 orange()-funktio, joka toimii ja antaa samanlaisen tulosteen kuin range(). Orange() ottaa vastaan ​​samat parametrit kuin range().

Syntaksi:

arange(start, stop, step)

Työskennelläksesi NumPyn kanssa, noudata alla olevia ohjeita.

Vaihe 1: Tuo NumPy-moduuli

import numpy

Jos suorituksen aikana saat virheilmoituksen "numin moduulia ei löydy", sinun on asennettava moduuli vaiheessa 2 esitetyllä tavalla.

Vaihe 2Asenna 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 ole mahdollista saada range():llä, mutta se on mahdollista NumPy arange():llä.

Esimerkiksi:

Haluamamme alue on 0.5–1.5. Arvoa kasvatetaan 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 tuloste on hieman outo; jotkut liukulukuluvut näytetään 16 desimaalin tarkkuudella. Tämä johtuu desimaalilukujen tallentamisen monimutkaisuudesta binäärimuodossa. Voit myös pyöristää arvot tarvittaessa ja rajoittaa ne tarvitsemiisi desimaalien tarkkuuteen.

UKK

In Python 3, range() palauttaa laiskan, muuttumattoman alueobjektin, ei listaa. Se luo numeroita pyydettäessä. Kääri se list(range(n)):iin, kun varsinainen lista tarvitaan. Python 2 palautti täydellisen listan.

Stop-arvo on poissulkeva, joten range(len(items)) vastaa siististi nollapohjaisia ​​indeksejä. Päätepisteen sisällyttämiseksi lisää stop-arvoon yksi, esimerkiksi range(1, 11) laskeaksesi luvut 1:stä 10:een.

Ei. Funktion range(0, 10, 0) kutsuminen aiheuttaa ValueError-virheen: range() arg 3 ei saa olla nolla, koska nolla-askel ei voi koskaan saavuttaa lopetusarvoa ja se toistuisi loputtomiin. Käytä sen sijaan positiivista tai negatiivista askelta.

range() hylkää liukulukut, mutta listan ymmärtäminen voi skaalata kokonaislukuja: [x * 0.5 for x in range(0, 6)] tuottaa arvon 0.0 - 2.5. Tämä estää NumPy:n tuonnin askelluksen aikana.ping desimaaliarvojen kautta.

Kyllä. Range-objekti tallentaa vain aloitus-, lopetus- ja askellusarvonsa, joten range(1000000) käyttää samaa pientä, vakiomäärää muistia kuin range(10). Arvot lasketaan yksi kerrallaan iteraation aikana.

Käytä in-operaattoria: 5 in range(0, 10) palauttaa arvon True. Range-objekteille Python suorittaa tämän jäsenyystestin nopealla aritmetiikalla vakioajassa jokaisen elementin skannaamisen sijaan, joten se pysyy tehokkaana valtavilla väleillä.

Koneoppimiskoodi käyttää range()-funktiota silmukoidakseen harjoitusepookkien läpi, iteroidakseen mini-erät ja rakentaakseen hyperparametriruudukoita. NumPy arange() ja linspace() laajentavat tätä liukulukualueille oppimisnopeusaikatauluille ja kynnysarvojen pyyhkäisyille, jotka ovat yleisiä tekoälykokeissa.

Kyllä. Tekoälykoodausavustajat, kuten GitHub Copilot, joka täydentää automaattisesti range()-pohjaisia ​​silmukoita kommentin tai funktion nimestä, ja agenttityökalut voivat muokata indeksisilmukoita selkeämmiksi enumerate()- tai ymmärrysmalleiksi, vaikka luodut rajat vaativatkin nopean tarkistuksen.

Tiivistä tämä viesti seuraavasti: