[Python] Determinazione altezza albero

Dario Bertini berdario a gmail.com
Gio 5 Dic 2013 16:29:33 CET


On Thu, Dec 5, 2013 at 4:12 PM, Daniele Varrazzo <piro at develer.com> wrote:
> penso funzioni anche:
>
>     def depth(tree):
>         return 1 + max((depth(t) for t in tree), 0)

no,

max(...)
    max(iterable[, key=func]) -> value
    max(a, b, c, ...[, key=func]) -> value

    With a single iterable argument, return its largest item.
    With two or more arguments, return the largest argument.

non puoi mischiare i 2 modi nei quali viene chiamato

la cosa bella di map(), è che in python3 è lazy

rinunciandoci, ed usando python2 (oppure usando itertools.chain) è
però possibile scrivere


def height(tree):
  return 1 + max([0]+map(height, tree))



2013/12/5 Federico Caboni <federico.caboni at python-academy.de>:
>
> Il giorno 05/dic/2013, alle ore 15:07, De Santis Luca <farolfo at hotmail.com>
> ha scritto:
>
> Effettivamente è molto compatta ed elegante, non conoscevo la funzione
> map(), praticamente è una forma più compatta di yield se non ho capito male
> .
>
>
> No: sono due cose diverse.
> yield serve per creare un generatore, ovvero un tipo di particolare di
> funzione che mantiene (yield=mantenere) lo stato tra una chiamata e l’altro,
> ritornando un valore nuovo ad ogni sollecitazione (pensa a come si comporta
> xrange, per esempio).


yield ha più il significato di "dare", "restituire", "fornire" più che
di "mantenere"

https://en.wiktionary.org/wiki/yield#Verb

io lo vedo come un return che "restituisce valori senza ritornare"


-- 
xmpp: berdario at gmail.com
bitmessage: BM-2cTYXfGiSTsnx3righ6aHcJSWe4MV17jDP
gpg fingerprint: 3F8D53518012716C4EEF7DF67B498306B3BF75A0 (used just
for signing commits)


Maggiori informazioni sulla lista Python