A (szám)tartomány is iterálható:
>>> for i in range(3): ... print(i) ... 0 1 2
Ahogyan a fenti példa mutatja, a tartomány jobbról nyílt.
A tartomány alapértelmezett kezdőértéke 0:
>>> range(3) range(0, 3)
A stringeknél, illetve listáknál látott módon most is megadhatunk lépésközt:
>>> for i in range(0, 12, 3): ... print(i) ... 0 3 6 9
A python nyelv egyik jellegzetes konstrukciója az egysoros ciklus. Az alábbi példa egy tartomány elemeiből épít listát:
>>> lst= [i for i in range(3)] >>> lst [0, 1, 2]
A tartományokat stringek esetén, listák esetén is felhasználhatjuk index szerinti iterációhoz:
>>> str= 'Énókhé' >>> for i in range(len(str)): ... print(i, str[i]) ... 0 É 1 n 2 ó 3 k 4 h 5 é >>> lst= ['Semé', 'Noéé', 'Lámekhé', 'Mathuséláé', 'Énókhé', 'Járedé', 'Mahalaléelé', 'Kajnáné', 'Énósé', 'Sethé', 'Ádámé', ] >>> for i in range(0, len(lst), 2): ... print(i, lst[i]) ... 0 Semé 2 Lámekhé 4 Énókhé 6 Mahalaléelé 8 Énósé 10 Ádámé
A len() függvény a szó hétköznapi jelentése szerint adja meg a hosszt (hatkarakteres stringnél hatot, 11-elemű listánál 11-et); ennek kapcsán érdemes megfigyelni, hogy a jobbról nyitottan értendő range szép összhangban van a string karaktereinek, illetve a lista elemeinek indexelésével.
A print parancs alapértelmezés szerint szóközzel választja el a kiíratott értékeket, de ez a sep paraméterrel megváltoztatható:
>>> for i in range(0, len(lst), 2): ... print(i, lst[i], sep=': ') ... 0: Semé 2: Lámekhé 4: Énókhé 6: Mahalaléelé 8: Énósé 10: Ádámé
A fentieket a Céllövészet című feladathoz felhasználva (inf_e_20140513_i_04):
print('1. feladat') print('A verseny.txt állomány adatainak olvasása…') file = open('inf_e_20140513_i_04_verseny.txt') l_vers= [] line = file.readline() line = file.readline() while line != '': l_vers+= [line[:-1]] line = file.readline() print('2. feladat') for i in (range(len(l_vers))): if '++' in l_vers[i]: print(i+1, end=' ') print()
Vegyük észre, hogy az állomány olvasásának elején két .readline() utasítást adtunk ki: az elsővel beolvassuk a (számunkra felesleges) kezdősort, melyet rögtön el is dobunk.
Figyeljük meg továbbá , hogy a felhasználó számára az indexek eggyel növelt értékét írtuk ki, hogy a hétköznapi gondolkodás egy alapú számozásához igazodjunk.
Az utolsóként kiírt elemet (is) szóköz követi: ez persze felesleges, de (többnyire) nem látszik; utána (az ismétlés befejeződése után) viszont (többnyire) sort kell emelnünk.