any() and all() on empty list?
Paul Rubin
http
Thu Mar 30 18:20:24 EST 2006
Steven D'Aprano <steve at REMOVETHIScyber.com.au> writes:
> >> No, all(seq) is true if every element in seq is true. Surely that's a
> >> more intuitive definition than your definition by what you can't do.
> > They are different?
> Of course they are different -- they differ in the case of an empty
> sequence.
I don't think they differ in the case of an empty sequence. If the
sequence is empty, both statements are true.
> > By the definition, "all flying elephants are pink" and "all flying
> > elephants are non-pink" are both true statements, if that's what
> > you're asking. There is no contradiction.
>
> Of course there is a contradiction. The contradiction is that flying
> elephants are simultaneously pink and not pink.
Neither statement asserts the existence of any flying elephants
regardless of color, so neither statement contradicts the other
statement.
> If you don't understand why "Foo is Bar" and "Foo is not Bar" can't both
> be true simultaneously, I suggest you spend some time googling on
> "noncontradiction logic". To get you started, here's the Wikipedia entry:
>
> http://en.wikipedia.org/wiki/Law_of_noncontradiction
"All flying elephants are pink" is not a statement of the form "Foo is
Bar". See <http://en.wikipedia.org/wiki/For_all>, as I've cited
several times. "All flying elephants are pink" simply means "there
are no non-pink flying elephants". "All flying elephants are
non-pink" similarly means "there are no pink flying elephants". The
statements don't contradict, and in fact both statements are true.
> if husband.stopped_beating_wife(): # returns True or False
> pay_fine()
> else:
> go_to_jail()
>
> Pretty hard on the innocent husbands who never even beat their wife at all.
Correct. The code should not be written that way.
> In hacker culture, the Chinese word
> "mu" (literally "without") is sometimes used to mean "I cannot answer that
> question because your assumptions are not correct".
>
> In the case of all(seq), the correct answer is "mu".
I don't think it's that bad. We just have to spell out precisely what
the assumptions are, and we've done so.
More information about the Python-list
mailing list