Zwróć uwagę, że sorted(a)zwróci posortowaną listę, więc w przypadku porównań ciągów nie musisz tego robić join()(zobacz odpowiedź askewchan poniżej).
Skippy le Grand Gourou
Zauważ, że ''.join(sorted(a, reverse=True, key=str.lower))można tego użyć do wykonania sortowania odwróconego bez rozróżniania wielkości liter. Może się przydać.
Superdooperhero
89
>>> a ='ZENOVW'>>> b = sorted(a)>>>print b['E','N','O','V','W','Z']
sortedzwraca listę, więc możesz ponownie uczynić ją ciągiem za pomocą join:
>>> c =''.join(b)
który łączy elementy brazem z pustym ciągiem ''między każdym elementem.
Hej, to pierwsze rozwiązanie było trochę przydatne w przypadku pracy domowej, w której musiałem znaleźć list z dwusieczną. Tak, już wiem o klasie string i metodzie find (), ale to mija się z celem ćwiczenia;)
runlevel0
9
Możesz użyć redukcji
>>> a ='ZENOVW'>>> reduce(lambda x,y: x+y, sorted(a))'ENOVWZ'
kod może służyć do sortowania ciągów znaków w porządku alfabetycznym bez użycia żadnej wbudowanej funkcji Pythona
k = input ("Wprowadź ponownie dowolny ciąg")
li =[]
x = len(k)for i in range (0,x):
li.append(k[i])print("List is : ",li)for i in range(0,x):for j in range(0,x):if li[i]<li[j]:
temp = li[i]
li[i]=li[j]
li[j]=temp
j=""for i in range(0,x):
j = j+li[i]print("After sorting String is : ",j)
Dobra robota za pierwszą odpowiedź. Wystarczy wziąć pod uwagę ciąg 1 miliona znaków, a polecenie tuple () utworzy ogromną listę skumulowanych opcji, która zużywa niepotrzebnie dużą ilość pamięci.
tda
Zgoda. Tak więc, aby poprawić złożoność przestrzeni, chodzi o to, aby pracować z samą iteracją, a nie konwertować ją na strukturę danych. Miły. Dziękuję Ci.
sorted(a)
zwróci posortowaną listę, więc w przypadku porównań ciągów nie musisz tego robićjoin()
(zobacz odpowiedź askewchan poniżej).''.join(sorted(a, reverse=True, key=str.lower))
można tego użyć do wykonania sortowania odwróconego bez rozróżniania wielkości liter. Może się przydać.sorted
zwraca listę, więc możesz ponownie uczynić ją ciągiem za pomocąjoin
:który łączy elementy
b
razem z pustym ciągiem''
między każdym elementem.źródło
Rozwiązanie Sorted () może dać nieoczekiwane wyniki z innymi ciągami.
Lista innych rozwiązań:
Sortuj litery i wyróżnij je:
Sortuj litery i wyróżnij je, zachowując wielkie litery:
Sortuj litery i zachowaj duplikaty:
Jeśli chcesz pozbyć się spacji w wyniku, dodaj funkcję strip () w każdym z wymienionych przypadków:
źródło
Możesz użyć redukcji
źródło
Funkcja Pythona
sorted
zwraca wynik oparty na ASCII dla łańcucha.NIEPRAWIDŁOWO : W poniższym przykładzie
e
id
jest z tyłuH
iW
ze względu na wartość ASCII.PRAWIDŁOWO : Aby zapisać posortowany ciąg bez zmiany wielkości liter. Użyj kodu:
Jeśli chcesz usunąć wszystkie znaki interpunkcyjne i cyfry. Użyj kodu:
źródło
kod może służyć do sortowania ciągów znaków w porządku alfabetycznym bez użycia żadnej wbudowanej funkcji Pythona
k = input ("Wprowadź ponownie dowolny ciąg")
źródło
Naprawdę podobała mi się odpowiedź z funkcją redukuj (). Oto inny sposób sortowania ciągu przy użyciu sumowania ().
posortowane (s) -> ['i', 'i', 'i', 'i', 'm', 'p', 'p', 's', 's', 's', 's' ]
krotka (akumuluj (posortowane (s)) -> ('i', 'ii', 'iii', 'iiii', 'iiiim', 'iiiimp', 'iiiimpp', 'iiiimpps', 'iiiimppss', 'iiiimppsss ',' iiiimppssss ')
Wybieramy ostatni indeks (-1) krotki
źródło