Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:258:8d34:99...–

peter
Python › Python - 9. lekce - sort()
26. 9. 2017   #217977

u cmpX(a,b), se jako parametry a,b predavaji cela pole
pole = [
['praha', 1.000.000], => a
['brno', 200.000], => b
]
Takze, pokud chces porovnavat pocet obyvatel, tak do te funkce musis dat a[1] a b[1]. Pokud nazvy mes, tak a[0] a b[0].

peter
Python › Python - 9. lekce - sort()
26. 9. 2017   #217976

http://python-reference.readthedocs.io/en/latest/docs/list/sort.html#id1

list. sort([cmp[, key[, reverse]]])

cmp - je compare funkce, typ sort funkce. Sort ma v sobe zabudovany nejaky algoritmus, ktery porovnava 2 hodnoty a sotrebuje zjistit, ktera je vetsi, mensi, rovna, podle toho vykonava cast algoritmu 1 nebo 2 nebo 3. Pouziju javascriptovy zapis, python moc nepouzivam.

function cmpNum(a,b)
{
if (a>b) {return 1;}
if (a<b) {return -1;}
return 0; // a==b
}

function cmpStr(a,b)
{
if (len(a)-len(b)) {return cmpNum(a,b);}
else return {cmpNum(len(a),len(b))}
}
// jakoze u stringu je rychlejsi porovnat delku a az pak resit porovnani treba 1000 znaku s 1000 znaky, takze, abys sortovani urychlil, pouzijes vlastni funkci

function cmpX(a,b)
{
if (a[0]>b[0]) {return 1;}
if (a[0]<b[0]) {return -1;}
return 0; // a[0]==b[0]
}
// pole, ktere pro sort ted pouzivam, je dvourozmerne (tabulka) a chces porovnavar prvni sloupec a ostatni te nezajimaji
// je mozne napsat cmp i pro porovnani vice sloupcu, neco jako sql ORDER BY. Tohle ovsem defaultni sort nemuze vedet, jake sloupce chces sortovat podle jakych pravidel

list.sort()
list.sort(cmpNum)
list.sort(cmpStr)
list.sort(cmpX)

A treba budes chtit specialitku, potrebujes aby prvnich 5 vysledku ze seznamu mest byla praha, brno, ostrava, plzen, pardubice. To ten sort take nemuze vedet, proto si napises vlastni sort funkci a nebo to po sortovani upravis.
Jestli gna chapu spravne, tak pythonove sort ma asi tu moznost nastavit prvni key (v jinych jazycich to neni), sloupec pro serazovani tabulky. Coz je sice cool, ale nevim, zda by se tam dalo napsat vic sloupcu. Jako serad podle veku, prijmeni, jmena. Kdyz ne, zas bys musel napsat vlastni cmp funkci.

Mno, a obcas je treba napsat vlastni sort, protoze treba pro bzip potrebujes serazovaci algoritmus, ktery, kdyz porovnava dve stejne hodnoty, tak je nesmi prehodit.Coz treba quick-sort ne tak uplne splnuje. Aspon nekdy jsem cetl, ze vetsinou se pro sort pouziva quicksort.

peter
PHP › Problém s renderováním dat
26. 9. 2017   #217975

#60 Kit - Jako, teoreticky by mohl sql dotaz pindat na duplicitni sloupce, jak to dela u spojovani pomoci LEFT JOIN. Ale to nemuzu rici, nemam vyzkouseno a bohuzel kazdy sql se chova trochu jinak pro stejne problemove dotazy.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý