Az SMS szavak című feladat negyedik lépésében ki kell választanunk egy lista leghosszabb szavát. Nincs jelentősége annak, hogy ezt a lista melyik helyén találjuk meg, így iterálhatunk érték szerint.
A klasszikus megoldás tehát:
_(4) maxw= '' for word in l_wds: if len(word)>len(maxw): maxw= word print('A leghosszabb tárolt szó: ', maxw, '; ennek hossza: ', len(maxw), ' karakter.', sep= '')
Maximumot azonban a python nyelv max() függvényével is kereshetünk (minimumot ennek megfelelően a min() függvénnyel): ezek argumentuma –éppen úgy mint a rendezés esetén– lehet például string, lista vagy vektor.
Mivel az argumentumlista túl hosszú, a sort a \ karakterrel félbeszakítjuk, aztán folytatjuk; emlékeztetünk egyúttal az ékezetes betűk problémájára is:
>>> max('nyugotifelsőszombatfalva') 'ő' >>> max(['izsa', 'bazsi', 'balázs', 'balázsd', 'alsózsid',\ ... 'alsójózsa', 'balázsszeg', 'alsópozsgás', 'alsógörzsöny', 'balatonbozsok',\ ... 'alsószelezsény', 'almásbalázsháza', 'felsőbalázsfalva', 'alsószenterzsébet', 'zsilymaczesdparoseny']) 'zsilymaczesdparoseny'
E függvények argumentumai között azonban azt is megadhatjuk, hogy milyen függvény határozza meg a rendezendő elemek sorrendjét:
>>> min(['izsa', 'bazsi', 'balázs', 'balázsd', 'alsózsid',\ ... 'alsójózsa', 'balázsszeg', 'alsópozsgás', 'alsógörzsöny', 'balatonbozsok',\ ... 'alsószelezsény', 'almásbalázsháza', 'felsőbalázsfalva', 'alsószenterzsébet', 'zsilymaczesdparoseny'],\ ... key= len) 'izsa'
Ezek után az előző lépés más megoldása:
_(4) maxw= max(l_wds, key=len) print('A leghosszabb tárolt szó: ', maxw, '; ennek hossza: ', len(maxw), ' karakter.', sep= '')
Az ötödik lépésben kért megszámoláshoz nincs szükségünk új ismeretre:
_(5) n_shw= 0 for word in l_wds: if len(word)<=5: n_shw+= 1 print('A rövid szavak száma:', n_shw)