[Python-ideas] Add "equal" builtin function
Nick Coghlan
ncoghlan at gmail.com
Fri Oct 7 10:55:28 EDT 2016
On 6 October 2016 at 23:45, Filipp Bakanov <filipp at bakanov.su> wrote:
> For now there are many usefull builtin functions like "any", "all", etc. I'd
> like to propose a new builtin function "equal". It should accept iterable,
> and return True if all items in iterable are the same or iterable is emty.
If the items are hashable, you can already just dump them in a set:
len(set(iterable)) <= 1
If they're not hashable or you want to exit ASAP on larger inputs,
you'll want an algorithm that works the same way any/all do:
def all_same(iterable):
itr = itr(iterable)
try:
first = next(itr)
except StopIteration:
return True
return all(x == first for x in itr)
(Checking the SO question, both of those are given in the first answer)
If you know you have a sequence, you can also do:
not seq or all(x == seq[0] for x in seq)
Exactly which of those options makes sense is going to depend on what
format your data is in, and what other operations you're planning to
do with it - without a context of use in the SO question, it sounds
more like someone seeking help with their algorithms and data
structures homework than it does a practical programming problem.
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-ideas
mailing list