2012-10-22 23 views
10

Mamy liczb w ciąg tak:sortować numery w jednej linii

numbers = "1534423543" 

Chcemy uporządkować to i powrót: (! Tylko unikalnych numerów)

"1,2,3,4,5" 

Jak zrobić to w JEDNEJ linii?

+12

dlaczego tak ważne jest robienie tego w jednym wierszu? – Ant

Odpowiedz

28

użycie set() uzyskać unikalne przedmioty, a następnie posortować je za pomocą sorted() i wreszcie połączyć je za pomocą ",".join()

In [109]: strs="1534423543" 

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

To jest dziura w jednym! – Pramod

+1

Awsome !! Jakkas odpowiedzieć .. :). –

+0

Czy potrzebujemy użyć 'sorted()' jeśli string zawiera tylko liczby? –

5

Ashwini ma odpowiedź, która jest na czubku palców każdego z nas - jeśli czujesz się na import, można zrobić ...

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

I to prawie jeden wiersz :)

+6

+1 za ścisłe przestrzeganie wymogu. lol :) –

+0

Dlaczego wolałbyś to od prostszego rozwiązania "set"? – mgilson

+0

@mgilson Zdecydowanie użyłbym rozwiązania 'set', pomyślałem, że podrzucę alternatywę (i dzięki za edycję) –