Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #2698

Re: a better way to invert a list?

From Peter Otten <__peter__@web.de>
Subject Re: a better way to invert a list?
Date 2011-04-06 11:58 +0200
Organization None
References <2215eefd-3677-4459-8656-aa04978f6f3f@g7g2000pro.googlegroups.com> <mailman.61.1302039998.9059.python-list@python.org> <ad5aa280-8a34-44db-8e0e-9c1f382a4b2f@a17g2000yqn.googlegroups.com> <a265eb9c-eb57-416d-a71a-1ed755de8901@l30g2000vbn.googlegroups.com>
Newsgroups comp.lang.python
Message-ID <mailman.73.1302083939.9059.python-list@python.org> (permalink)

Show all headers | View raw


Glazner wrote:

>> > def invert(p):
>> > inverse = [None] * len(p)
>> > for (i, j) in enumerate(p):
>> > inverse[j] = i
>> > return inverse
>>
>> Elegant. This seems like the best solution, although it isn't as much
>> fun to write as a "one-liner". Thanks
> 
> 
>>>> invert([1, 2, 3, 1])
> [None, 3, 1, 2] #blah

1 occurs twice in [1, 2, 3, 1] which therefore doesn't describe a 
permutation. In general a function has to be "bijective" to be invertable. 
You can catch the problem with (untested)

def invert(p):
    inverse = [None] * len(p)
    for i, k in enumerate(p):
        if inverse[k] is not None:
            raise ValueError
        inverse[k] = i
    return inverse

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

a better way to invert a list? scattered <tooscattered@gmail.com> - 2011-04-05 14:17 -0700
  Re: a better way to invert a list? Ian Kelly <ian.g.kelly@gmail.com> - 2011-04-05 15:46 -0600
    Re: a better way to invert a list? scattered <tooscattered@gmail.com> - 2011-04-05 16:24 -0700
      Re: a better way to invert a list? Glazner <yoavglazner@gmail.com> - 2011-04-06 01:48 -0700
        Re: a better way to invert a list? scattered <tooscattered@gmail.com> - 2011-04-06 02:48 -0700
        Re: a better way to invert a list? Peter Otten <__peter__@web.de> - 2011-04-06 11:58 +0200
    Re: a better way to invert a list? Raymond Hettinger <python@rcn.com> - 2011-04-05 17:07 -0700
  Re: a better way to invert a list? Paul Rubin <no.email@nospam.invalid> - 2011-04-06 12:51 -0700
    Re: a better way to invert a list? Ian Kelly <ian.g.kelly@gmail.com> - 2011-04-06 14:08 -0600

csiph-web