Hirdetés

Új hozzászólás Aktív témák

  • cousin333

    addikt

    válasz K1nG HuNp #1389 üzenetére

    Igen, úgy van, ahogy leírtad. Az #1387-ban lévő megoldás is helyes, de nem szerencsés. Azzal keverted meg magad, hogy mindent hossz-nak hívsz.

    Az eredeti hossz egy lista, tehát iterálható. A max() pedig pont ilyet vár, hogy végiglépdeljen (iteráljon) az elemeken. A key paraméter egy függvényt vár, ami egyenként végrehajtódik minden egyes listaelemen. A max aztán ennek a függvénynek a kimeneteire vonatkozik. Az alapverzió valahogy így néz ki:

    hossz = [[1, 230], [2, 324], [3, 69], [4, 5], [5, 240], [6, 248]]

    def masodik(lista):
    return lista[1]

    max_hossz = max(hossz, key=masodik)

    Namost ehhez a feladathoz teljesen felesleges egy külön függvényt definiálni. Erre találták ki a lambda függényt, ami tulajdonképpen egy rövid, névtelen, "eldobható" megoldás:

    hossz = [[1, 230], [2, 324], [3, 69], [4, 5], [5, 240], [6, 248]]

    max_hossz = max(hossz, key=lambda x: x[1])

    A fenti esetben az x a hossz lista elemeit jelenti (egyenként): x=[1, 230] majd x=[2, 324], aztán x=[3, 69]... stb. A visszatérési érték pedig ezen elemek 2. tagja, amikre aztán a max kiszámítja a maximumot. Az eredmény viszont nem ez a szám lesz, hanem az az eredeti listaelem, ami ezt a számot adta: [2, 324].

Új hozzászólás Aktív témák