While we're talking about annoyances
Michael Hoffman
cam.ac.uk at mh391.invalid
Sun Apr 29 06:46:05 EDT 2007
GHUM wrote:
> Steven,
>
>> def index(sequence):
>> decorated = zip(sequence, xrange(len(sequence)))
>> decorated.sort()
>> return [idx for (value, idx) in decorated]
>
> would'nt that be equivalent code?
>
> def index(sequence):
> return [c for _,c in sorted((b,a) for a, b in
> enumerate(sequence))]
Or even these:
def index(sequence):
return sorted(range(len(sequence)), key=sequence.__getitem__)
def rank(sequence):
return sorted(range(len(sequence)),
key=index(sequence).__getitem__)
Hint: if you find yourself using a decorate-sort-undecorate pattern,
sorted(key=func) or sequence.sort(key=func) might be a better idea.
--
Michael Hoffman
More information about the Python-list
mailing list