[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