On Sat, 25 Sept 2021 at 02:01, Chris Angelico <ros...@gmail.com> wrote:
> On Sat, Sep 25, 2021 at 10:56 AM Oscar Benjamin > <oscar.j.benja...@gmail.com> wrote: > > > > On Sat, 25 Sept 2021 at 00:37, Greg Ewing <greg.ew...@canterbury.ac.nz> > > wrote: > > > I suppose they could be fiddled somehow to make it possible, but > > > that would be turning them into special cases that break the rules. > > > It would be better to provide separate functions, as was done with > > > sum(). > > > > > > > A separate union function would be good. Even in a situation where all > > inputs are assured to be sets the set.union method fails the base case: > > > > >>> sets = [] > > >>> set.union(*sets) > > Traceback (most recent call last): > > File "<stdin>", line 1, in <module> > > TypeError: descriptor 'union' of 'set' object needs an argument > > > > In the case of intersection perhaps the base case should be undefined. > > > > Rather than calling the unbound method, why not just call it on an > empty set? That defines your base case as well. > > set().union(*sets) > That is indeed what I do but it seems unnatural compared to simply union(*sets). It shouldn't be necessary to create a redundant empty set just to compute the union of some other sets. If there was a union function then I don't think I would ever use the union method. -- Oscar -- https://mail.python.org/mailman/listinfo/python-list