andmap and ormap

Felipe Almeida Lessa felipe.lessa at gmail.com
Tue Mar 14 07:30:21 EST 2006


Em Ter, 2006-03-14 às 04:23 -0800, wkehowski at cox.net escreveu:
> def andmap(b,L):
>   if False in map(b,L): return False
>   else: return True
> 
> def ormap(b,L):
>   if True in map(b,L): return True
>   else: return False
> 
> Is this good enough?

The problem is that it will evaluate all possibilities needlessly. Try
(not tested and 2.4-only):

def andmap(func, objs):
	for boolean in (func(obj) for obj in objs):
		if not boolean:
			return False
	return True

def ormap(func, objs):
	for boolean in (func(obj) for obj in objs):
		if boolean:
			return True
	return False

-- 
"Quem excele em empregar a força militar subjulga os exércitos dos
outros povos sem travar batalha, toma cidades fortificadas dos outros
povos sem as atacar e destrói os estados dos outros povos sem lutas
prolongadas. Deve lutar sob o Céu com o propósito primordial da
'preservação'. Desse modo suas armas não se embotarão, e os ganhos
poderão ser preservados. Essa é a estratégia para planejar ofensivas."

  -- Sun Tzu, em "A arte da guerra"




More information about the Python-list mailing list