On May 21, 4:36 am, Bruno Desthuilliers <bruno.
[EMAIL PROTECTED]> wrote:
> Simon Forman a écrit :
>
>
>
> > On May 20, 8:58 am, Paul McGuire <[EMAIL PROTECTED]> wrote:
> >> On May 20, 10:50 am, [EMAIL PROTECTED] wrote:
>
> >>> You don't need all those conditionals. A set differs from a list
> >>> precisely in the fact that each element is unique. And since the
> >>> function is expecting "s" to be an iterable object, it can be
> >>> constructed even without a for loop:
> >>> def compress(s):
> >>>     return list(set(s))
> >>> That does the trick.
> >> Only if order does not need to be maintained.  list(set(s)) will not
> >> necessarily keep the unique characters in the order they are seen.
> >> We'll have to check with the OP to see if this is important (I just
> >> assumed that it was because of the use of list comps).
>
> >> -- Paul
>
> > If order is important, you can use sorted() instead of list() like so:
>
> > def compress(s):
> >     new = sorted(set(s), key=s.index)
> >     return return ''.join(new)
>
> This won't still preserve the *original* order.


I don't understand.

new will contain each unique item in s, sorted in order of the items'
first occurance in s, right?
There are other ways to do it (other functions that could be passed to
sorted() as the key arg) of course, but this seems like a good value
of "original order", no? :)

Regards,
~S
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to