Quoting Ilia Mirkin (2016-04-01 08:46:19) > IMHO this is still quite fancy and unnecessarily complicated. > > How about > > temp = dict((f.offset, f) for f in self.functions_by_name.itervalues()) > return (temp[offset] for offset in sorted(temp)) > > That's all that's happening there, right? This lets you not use yield > (which is confusing to most people, as Brian points out), but still > uses a generator to avoid creating that second list, behind the > scenes, while staying understandable to people who understand list > comprehensions (which, hopefully, anyone using python by now does... > they've been around since at least Python 2.2) > > [BTW, this is not a complete review of the series... just looking at > this patch because Brian happened to reply to it.]
I knew there must be an easier way to do this, I had a different
implementation that was simpler, but didn't sort correctly, before this
one, and I wasn't really happy with this.
I don't think we actually need to care about max_offset do we? Since
that was more an implementation detail of the original function, I'll
rebase out the previous patch too.
I don't think yours is exactly right though, since it doesn't handle the
offset == -1, but that's trivial.
Something like this(?):
temp = [(f.offset, f) for f in self.functions_by_name.itervalues()
if f.offset != -1]
return (func for _, func in sorted(temp))
I guess we could make one generator comprehension out of it, but
performance isn't that critical (though this does seem to be slightly
faster).
return (f for f in sorted(self.functions_by_name.itervalues(),
key=lambda f: f.offset)
if f.offset != -1)
Which do you think is more readable?
Dylan
>
> >
> > def functionIterateAll(self):
> > return self.functions_by_name.itervalues()
> > --
> > 2.8.0
> >
> > _______________________________________________
> > mesa-dev mailing list
> > [email protected]
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
