A hurkok számára a Pythonban

Loop utasításokhoz

A Python egy for for ciklust használ az elemek listájának ismétléséhez. Ellentétben a C-vel vagy a Java-val, amelyek a for ciklust használják az érték lépésenkénti megváltoztatására, és elérnek valamit, például egy tömböt ezen érték használatával.

A ciklusok esetében a gyűjteményalapú adatstruktúrák, például listák, sorrendek és szótárak ismétlődnek.

Az alapvető szintaxis:

for value in list_of_values: # use value inside this block

Általában bármit használhat iterátor értékként, ahol az iterable bejegyzései hozzárendelhetők. Például kicsomagolhatja a sorrendet a sorrendben:

list_of_tuples = [(1,2), (3,4)] for a, b in list_of_tuples: print("a:", a, "b:", b)

Másrészről bármit áttekinthet, ami iterálható. Hívhat egy függvényt, vagy használhat egy listát literálnak.

for person in load_persons(): print("The name is:", person.name)
for character in ["P", "y", "t", "h", "o", "n"]: print("Give me a '{}'!".format(character))

Néhány módszer a For ciklusok használatára:

Az iteráció a tartomány () függvény felett

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

A tartomány nem függvény, hanem egy megváltoztathatatlan szekvenciatípus. A kimenet eredményeket tartalmaz az alsó határtól, azaz a 0-tól a felső határig, azaz 10-ig, de kivéve a 10-et. Alapértelmezés szerint az alsó határ vagy a kezdő index nulla. Kimenet:

> 0 1 2 3 4 5 6 7 8 9 >

Ezenkívül megadhatjuk a szekvencia alsó határát és akár a szekvencia lépését egy második és egy harmadik paraméter hozzáadásával.

for i in range(4,10,2): #From 4 to 9 using a step of two print(i)

Kimenet:

> 4 6 8 >

xrange () függvény

Az xrange és a range többnyire teljesen megegyezik a funkcionalitás szempontjából. Mindkettő lehetővé teszi az Ön számára használható egész számok listájának létrehozását, bárhogy is tetszik. Az egyetlen különbség az, hogy a tartomány egy Python listaobjektumot, az xrange pedig egy xrange objektumot ad vissza. Ez azt jelenti, hogy az xrange valójában nem generál statikus listát futás közben, mint a tartomány. Egy speciális technikával hozza létre az értékeket, amire szüksége van. Ezt a technikát egy olyan típusú objektummal együtt használják, amely generátor néven ismert.

Még valami hozzáfűznivaló. A Python 3.x-ben az xrange függvény már nem létezik. A tartományfüggvény most azt csinálja, amit az xrange a Python 2.x-ben

Az értékek ismétlése egy listában vagy duplán

A = ["hello", 1, 65, "thank you", [2, 3]] for value in A: print(value)

Kimenet:

> hello 1 65 thank you [2, 3] >

Billentyűk ismétlése egy szótárban (más néven hashmap)

fruits_to_colors = {"apple": "#ff0000", "lemon": "#ffff00", "orange": "#ffa500"} for key in fruits_to_colors: print(key, fruits_to_colors[key])

Kimenet:

> apple #ff0000 lemon #ffff00 orange #ffa500 >

Két azonos méretű listát ismételhet meg egy hurokban a zip () függvénnyel

A = ["a", "b", "c"] B = ["a", "d", "e"] for a, b in zip(A, B): print a, b, a == b 

Kimenet:

> a a True b d False c e False >

Iteráljon egy listán, és kapja meg a megfelelő indexet az enumerate () függvénnyel

A = ["this", "is", "something", "fun"] for index,word in enumerate(A): print(index, word)

Kimenet:

> 0 this 1 is 2 something 3 fun >

Gyakori eset az, hogy egy szótárban ismételgetünk:

for name, phonenumber in contacts.items(): print(name, "is reachable under", phonenumber)

Ha feltétlenül hozzáférnie kell az iteráció aktuális indexéhez, NE használja range(len(iterable))! Ez rendkívül rossz gyakorlat, és rengeteg kuncogást vált ki a vezető Python fejlesztőktől. Használja helyette a beépített funkciót enumerate():

for index, item in enumerate(shopping_basket): print("Item", index, "is a", item)

for / else állításokra

A Pyhton lehetővé teszi, hogy a másikat a ciklusokkal együtt használja, a másik eset akkor kerül végrehajtásra, amikor a ciklustest egyik feltétele sem teljesült. A másik használatához ki kell használnunk egy breakutasítást, hogy egy teljesített állapotban kitörhessünk a hurokból. Ha nem törünk ki, akkor a másik rész végrehajtásra kerül.

week_days = ['Monday','Tuesday','Wednesday','Thursday','Friday'] today = 'Saturday' for day in week_days: if day == today: print('today is a week day') break else: print('today is not a week day')

A fenti esetben a kimenet az lesz, today is not a week daymert a cikluson belüli törés soha nem kerül végrehajtásra.

Iterál egy lista felett az inline loop funkcióval

A soron belüli iterációt is megismételhetjük python használatával, például ha egy listában szereplő összes szót nagybetűvel kell ellátnunk egy listából, egyszerűen a következőket tehetjük:

A = ["this", "is", "awesome", "shinning", "star"] UPPERCASE = [word.upper() for word in A] print (UPPERCASE)

Kimenet:

> ['THIS', 'IS', 'AWESOME', 'SHINNING', 'STAR'] >

Több információ:

  • Python2 a hurok dokumentációjához
  • Python3 a hurok dokumentációjához