2012-10-22 5 views
10

Nous avons chiffres dans une chaîne comme ceci:numéros de tri dans une ligne

numbers = "1534423543" 

Nous voulons régler ce problème et retour: (seuls les numéros uniques)

"1,2,3,4,5" 

Comment le faire en UNE seule ligne?

+12

pourquoi est-ce si important le faire en une ligne? – Ant

Répondre

28

utilisation set() pour obtenir des objets uniques, les trier puis en utilisant sorted() et enfin les rejoindre en utilisant ",".join()

In [109]: strs="1534423543" 

In [110]: ",".join(sorted(set(strs))) 
Out[110]: '1,2,3,4,5' 
+2

C'est un trou dans UN! – Pramod

+1

Awsome !! Jakkas répond .. :). –

+0

Devons-nous utiliser 'sorted()' si la chaîne contient uniquement des nombres? –

5

Ashwini a la réponse qui est à la pointe des doigts de tout le monde - si vous êtes pour une importation, vous pouvez faire ...

from itertools import groupby; ','.join(k for k, g in groupby(sorted(nums))) 

Et c'est presque une ligne :)

+6

+1 pour suivre strictement l'exigence. lol :) –

+0

Pourquoi préféreriez-vous cela sur la solution 'set' plus simple? – mgilson

+0

@mgilson J'utiliserais certainement la solution 'set', je pensais juste jeter une alternative (et merci pour l'éditer) –