Python range() Funkció: Float, List, For loop Példák

⚡ Okos összefoglaló

Python A range() egy beépített függvény, amely egy megváltoztathatatlan egész számsorozatot generál egy kezdőértéktől egy stop értékig (de azt nem beleértve), egy opcionális lépéssel vezérelve a növekményt.

  • 🔘 Syntax: A range(start, stop, step) maximum három egész argumentumot fogad el, ahol a start alapértelmezett értéke 0, a step pedig 1.
  • ☑️ Kizárólagos megálló: A sorozat mindig egy értékkel a stop index előtt megáll, így a range(5) 0 és 4 közötti értéket ad.
  • Lépésvezérlés: A pozitív lépés növeli az értékeket, míg a negatív lépés visszafelé számol, így egy fordított tartományt kapunk.
  • 🧪 Típuskorlátok: Csak egész számok elfogadottak, így a lebegőpontos vagy karakterlánc argumentumok TypeError hibát okoznak.
  • 🇧🇷 NumPy lebegőpontos számok: A NumPy arange() függvény kiterjeszti a range() viselkedését lebegőpontos sorozatokra.
  • 🤖 AI munkafolyamatok: A gépi tanulási kód a range() függvényre támaszkodik a betanítási korszakok, mini-batchek és hiperparaméter-rácsok iterálásához.

Python range() függvény

Mi a Python Hatótávolság?

Python A range() egy beépített függvény, amellyel elérhető Python ból ből Python (3.x), és a megadott kezdő- és leállítási index alapján ad egy számsort. Ha a start index nincs megadva, az index 0-nak számít, és 1-gyel növeli az értéket a stop indexig.

Például a range(5) a 0, 1, 2, 3, 4 értékeket adja ki. A Python A range() egy nagyon hasznos parancs, és leginkább akkor használjuk, ha egy iterációt kell végezni. hurokhoz.

Szintaxis

A range() függvény szintaxisa az alábbiakban látható:

range(start, stop, step)

paraméterek

  • Rajt: (nem kötelező) A kezdőindex egy egész szám, és ha nincs megadva, az alapértelmezett érték 0.
  • állj meg: A stop index határozza meg azt az értéket, amelynél a range függvénynek le kell állnia. Ez a range függvény kötelező bemenete. Az utolsó érték mindig 1-gyel kisebb lesz, mint a stop érték.
  • lépés: (opcionális) A lépésköz értéke az a szám, amellyel a tartományban lévő következő számot növelni kell; alapértelmezés szerint ez 1.

Visszatérési érték

A visszatérési érték egy számsorozat az adott starttól a stop indexig.

Python range() Funkció és előzmények

Python A range() innen került bevezetésre Python 3-as verzió; előtte az xrange() függvény volt a megfelelő.

Mind a range(), mind az xrange() függvényeket használjuk számsorozatok előállítására.

A range() és az xrange() közötti különbségek a következők:

hatótávolság () xrange()
A range() megadja a számsort, és egy számlistát ad vissza. Az xrange() függvény egy generátor objektumot ad, amelyet for-ciklusban kell hurkolni, hogy megkapjuk az értékeket.
A range() egy listát ad vissza. Az xrange() egy generátor objektumot ad vissza.
A range() metódus több memóriát használ, mivel a visszaadott listát tárolni kell az xrange()-hoz képest. Mivel az xrange() egy generátor objektumot ad vissza, nem ad azonnal értékeket, és egy for cikluson belül kell használni az értékek lekéréséhez.
A memóriahasználat nagyobb, ezért a kód végrehajtása lassú, ha hatalmas adathalmazon dolgozunk. A kód végrehajtása gyorsabb az xrange() használatával.

A range() használata

Ez a példa bemutatja, hogyan nyomtathatja ki a 0-9 értékeket a range() használatával.

A tartományban használt érték 10, így a kimenet 0 1 2 3 4 5 6 7 8 9.

Mivel a kezdet nincs megadva, a kezdetet 0-nak tekintjük, és az utolsó értéket 9-ig adjuk meg. Az utolsó érték mindig 1-gyel kisebb, mint a megadott érték, azaz stop-1.

for i in range(10):
    print(i, end =" ")

output:

0 1 2 3 4 5 6 7 8 9

Start és stop in range() használata

A kódban a kezdőérték 3, a végérték pedig 10. Itt a kezdőindex 3, tehát a számsorozat 3-tól kezdődik a végértékig. A sorozat utolsó értéke 1-gyel kisebb lesz, mint a végérték, 10-1 = 9.

for i in range(3, 10):
    print(i, end =" ")

output:

3 4 5 6 7 8 9

Start, stop és step használata

A kezdőérték 3, tehát a számsorozat 3-mal kezdődik. A végérték 10, tehát a számsorozat (10-1)-nél, azaz 9-nél áll meg. A lépésköz 2, tehát a sorozat minden értéke 2-vel nő. Ha a lépésköz értéke nincs megadva, a lépésköz értéke alapértelmezetten 1.

for i in range(3, 10, 2):
    print(i, end =" ")

output:

3 5 7 9

Eddig láttuk, hogyan adja vissza a range() függvény a megadott stop értékhez tartozó növelt értéket. Most próbáljunk meg egy példát a megadott tartomány csökkentett értékének lekérésére.

A tartományban lévő értékek növelése pozitív lépéssel

A range() függvény step paramétere használható az értékek növelésére vagy csökkentésére. Alapértelmezés szerint ez egy pozitív érték, 1. Tehát mindig növelt értékeket ad.

A lépésköz értékének pozitívnak kell lennie, ha inkrementált értékeket szeretne kimenetként.

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

output:

1 6 11 16 21 26

Reverse Tartomány: Az értékek csökkentése negatív lépésközzel

A range() függvényben a step paraméter negatív értékkel használható csökkentett értékek lekérésére. Az alábbi példában a lépésköz értéke negatív, így a kimenet a megadott tartományértékhez képest csökken.

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

output:

15 14 13 12 11 10 9 8 7 6

A kezdőérték 15, a stop érték 5, a lépésköz pedig negatív szám, azaz -1. A fenti bemenetekkel a range() függvény 15-től kezdve csökkenti az értéket a stop értékig, de itt a különbség az, hogy az utolsó érték stop + 1 lesz.

Lebegő számok használata Python hatótávolság ()

Most dolgozzunk a range()-n lebegőpontos számok segítségével.

Példa:

for i in range(10.5):
    print(i, end =" ")

A fenti példában a stop értéket 10.5-ként használtuk.

A kimenet:

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 hibát ad, mivel a range() függvény nem támogatja a lebegőpontos számokat a start, stop és step értékekhez.

For-loop használata a Python hatótávolság ()

Ebben a példában egy számokból álló tömböt fogunk használni, és megnézzük, hogyan iterálhatjuk a tömböt egy for cikluson belül a range() függvénnyel.

Példa:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']

for i in range(len(arr_list)):
    print(arr_list[i], end =" ")

output:

MysqlMongodb PostgreSQL Firebase

A fenti példában a len(arr_list) függvényt használtuk stop értékként. A for ciklus a stop értékig fog iterálni, azaz a tömb hosszáig, ami 4 lesz, mivel négy elem van az arr_list-ben. A kezdőérték 0, a lépésköz pedig 1 lesz, tehát az értékek 0-tól kezdődnek és 3-nál állnak meg, azaz a tömb hossza -1, ami azt jelenti, hogy 4 -1 = 3.

<p></p> Python range() listaként

Ebben a példában látni fogjuk, hogyan lehet listaként használni a tartomány kimenetét.

Példa:

print(list(range(10)))

output:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Láthatja, hogy a kimenet lista formátumú. Nem volt szükség a range() ciklusra, és a list() metódussal közvetlenül konvertálhattuk a kimenetet tartományból lista formátumba.

A python range() karaktereinek használata

Eddig egész számokat használtunk a python range()-ben. Azt is láttuk, hogy a lebegőpontos számok nem támogatottak a python tartományban. Próbáljuk meg megnézni a kimenetet, hogy mi történik, ha karaktereket használunk.

Példa:

for c in range ('z'):
        print(c, end =" ")

output:

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

Hibát ad ki, miszerint egy karakterlánc nem értelmezhető egész számként.

Az ábécék listájának eléréséhez testreszabhatja a kódot, és megkaphatja a kívánt kimenetet az alábbiak szerint:

Példa:

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)))

output:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

A tartományelemek elérése

Használhat for-ciklust az értékek lekéréséhez a tartományból, vagy használhatja az indexet a range() elemeinek eléréséhez.

For-loop használata

Példa:

for i in range(6):
    print(i)

output:

0
1
2
3
4
5

Index használata

Az indexet a tartománnyal együtt használják az adott pozícióban elérhető érték meghatározásához. Ha a tartomány értéke 5, akkor a kezdőérték lekéréséhez használhatja a tartomány(5)[0] és a következő értéktartomány(5)[1] és így tovább.

Példa:

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)

output:

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

A lista() használata

Ez a módszer kinyomtatja a range() összes elemét. A list() használatával visszaadja a range() elemeit lista formátumban.

Példa:

print(list(range(10)))

output:

 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Megadja a lista kimenetét a megadott tartományhoz.

Példa: Páros számok beszerzése a range() használatával

A range() függvény használata a bemenetként megadott tartomány páros számainak listáját adja vissza. A range() paraméterei: a start érték 2, a stop érték 20, a step érték pedig 2, tehát az értékek 2-vel nőnek, és a stop-2-ig páros számokat adnak vissza.

Példa:

for i in range(2, 20, 2):
    print(i, end =" ")

output:

2 4 6 8 10 12 14 16 18

Két-tartomány() kimenetek egyesítése

Ebben a példában 2 range() függvényt fogunk összefűzni az itertools modul chain() függvényének segítségével.

Példa:

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=" ")

output:

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

A range() használata a NumPy-val

A NumPy modulnak van egy arange() függvénye, amely hasonló működésű és kimenetet ad, mint a range(). Az arange() ugyanazokat a paramétereket fogadja, mint a range().

Syntax:

arange(start, stop, step)

A NumPy használatához kövesse az alábbi lépéseket.

1 lépés: NumPy modul importálása

import numpy

Ha végrehajtás közben hibát kapunk, amely szerint a numpy modul nem található, akkor a 2. lépésben látható módon kell telepíteni a modult.

2 lépésTelepítse a NumPy-t

pip install numpy

3 lépés: Az arange() működő példája a NumPy használatával

import numpy as np

for  i in np.arange(10):
   print(i, end =" ")  

output:

0 1 2 3 4 5 6 7 8 9

Lebegőpontos számok a NumPy arange() használatával

A lebegőpontos sorozatot nem lehet a range() függvénnyel előállítani, de a NumPy arange() függvénnyel igen.

Példa:

A kívánt tartomány 0.5 és 1.5 között van. Az értéket 0.2-vel fogjuk növelni.

import numpy as np

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

A kapott kimenet kissé furcsa; néhány lebegőpontos szám 16 tizedesjegyre van megadva. Ez a decimális lebegőpontos számok bináris formátumban történő tárolásának összetettsége miatt van így. Szükség esetén kerekítheted is az értékeket, és a szükséges tizedesjegyekre korlátozhatod őket.

GYIK

In Python 3, a range() egy lusta, megváltoztathatatlan range objektumot ad vissza, nem egy listát. Igény szerint számokat generál. Csomagold be a list(range(n)) objektumba, ha egy tényleges listára van szükség. Python 2 egy teljes listát adott vissza.

A stop érték kizárólagos, így a range(len(items)) tisztán leképezi a nulla alapú indexeket. A végpont belefoglalásához adjon hozzá egyet a stop értékhez, például range(1, 11) 1-től 10-ig számol.

Nem. A range(0, 10, 0) függvény meghívása ValueError hibát okoz: a range() arg 3 függvény nem lehet nulla, mert egy nulla lépés soha nem érheti el a stop értéket, és örökké ciklusba lépne. Ehelyett pozitív vagy negatív lépést használjon.

A range() elutasítja a lebegőpontos számokat, de egy listafeldolgozás képes az egész számok skálázására: az [x * 0.5 for x in range(0, 6)] 0.0-tól 2.5-ig terjedő értéket eredményez. Ez elkerüli a NumPy importálását, miközben továbbra is lépésről lépésre haladunk.ping decimális értékeken keresztül.

Igen. Egy range objektum csak a kezdő, leállító és lépésértékeit tárolja, így a range(1000000) ugyanolyan apró, állandó memóriamennyiséget használ, mint a range(10). Az értékeket egyenként számítja ki a rendszer az iteráció során.

Használd az in operátort: ​​az 5 in range(0, 10) True értéket ad vissza. Range objektumok esetén Python ezt a tagsági tesztet gyors aritmetikával, konstans időben végzi el ahelyett, hogy minden elemet átvizsgálna, így hatalmas tartományok esetén is hatékony marad.

A gépi tanulási kód a range() függvényt használja a betanítási korszakok végigfutására, mini-kötegek iterálására és hiperparaméter-rácsok létrehozására. A NumPy arange() és linspace() kiterjesztik ezt lebegőpontos tartományokra a tanulási sebesség ütemezéseihez és a mesterséges intelligencia kísérletekben gyakori küszöbérték-átalakításokhoz.

Igen. Az olyan mesterséges intelligencia által fejlesztett kódolási asszisztensek, mint a GitHub Copilot automatikus kiegészítése range()-alapú ciklusokban egy megjegyzés vagy függvénynév alapján, és az ágenseszközök képesek az indexciklusokat átstrukturálni letisztultabb enumerate() vagy értelmezési mintákká, bár a generált határok továbbra is gyors áttekintést igényelnek.

Foglald össze ezt a bejegyzést a következőképpen: