[Python] 0 in (False,) // 0 == False

Daniele Varrazzo piro a develer.com
Gio 4 Feb 2010 13:15:37 CET


On Thu, 4 Feb 2010 10:26:40 +0100, Alessandro Dentella <sandro a e-den.it>
wrote:

> Mi viene qui di da chiedermi: ma che bisogno c'è che un booleano erediti
> da
> un intero? piace a tutti che "0 == False" sia vero?

A me piace... e mi piace ancora di più che 1 == True! In questo modo un
modo rapido per sapere quanti True hai in un insieme è sommare i valori
logici tra loro. O fare giochini tipo:

In [1]: def leggi_lati_triangolo():
   ...:     return map(int, raw_input().split())
   ...: 

In [2]: a, b, c = leggi_lati_triangolo()
3 4 4

In [3]: {0: 'scaleno', 1: 'isoscele', 3: 'equilatero'}[(a == b) + (b == c)
+ (a == c)]
Out[3]: 'isoscele'

In calcolo numerico si usa spesso moltiplicare una matrice numerica per
una matrice di booleani: la semplice moltiplicazione restituisce una
matrice che contiene solo i valori numerici corrispondenti ai "vero" dei
booleani. Perché dovrebbe essere più facile fare queste operazioni in C che
in Python? ;)

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com


Maggiori informazioni sulla lista Python