Can this be written more concisely in a functional style
Alex Martelli
aleax at aleax.it
Tue Nov 18 03:35:23 EST 2003
MetalOne wrote:
> 1)
> def f(xs):
> for x in xs:
> if test(x): return True
> return False
>
> I know that I can do (2), but it operates on the whole list and the
> original
> may break out early. I want the efficiency of (1), but the conciseness of
> (2).
>
> 2)
> return True in map(test,xs)
[2] is quite different [1] in terms of semantics, of course. [1] will
accept any true (non-false) result, such as 23 or 'foo', [2] won't. If
[2]'s semantics are what you want,
return True in itertools.imap(test, xs)
should give you exactly what you require. Otherwise, you may want to
ensure a 'bool' is further applied, either by using a lambda or by
nesting two imap calls.
Alex
More information about the Python-list
mailing list