Dobrý den,
v kurzu Python od geona - Lekce 9. jsem se zarazil u úlohy:
# Jinak fakt skvělý kurz, moc mě to baví :)
def porovnej(mestoSeznam):
# definice funkce, která bude spolupracovat se sort()
return mestoSeznam[1] # zde vracíme tu položku, podle které chceme řadit
mesta=[['Praha', 1000000], ['Brno', 350000], ['Ostrava', 300000], ['Zlin', 80000]]
mesta.sort(key=porovnej) # serad podle klice (= funkce) "porovnej"
print "Serazeno podle poctu obyvatel: ", mesta
V předposlednim řádku se pomoci metody sort() seřazuje seznam mesta podle argumentu key=porovnej - dělá co má.
Nechápu:
1) Jaktože můžeme volat funkci porovnej bez "()". No ale budiž, tak asi argument mestoSeznam ve funkci porovnej nebude důležitý,ouha...
2) Jaktože arg mestoSeznam neni definovan a přece to bez něj nejde = 3. řádek nemůžu prostě nahradit return [1]
3) Proč najednou taková komplikace, doted se mi zdál Python jako jednoduchý, "intuitivní" jazyk :(
Mnohem elegantnější mi přijde: mesta.sort(key=[1]) :) ach jo.
Snad někdo zná odpověd :) Děkuju za všechny reakce.
P.S.: Nevíte někdo jak bych se mohl "podívat do útrob" metody sort() a vidět co tenhle kód dělá s argumentem key?