Базовый ответ:
mylist = ["b", "C", "A"]
mylist.sort()
Это изменяет ваш первоначальный список (т.е. сортирует на месте). Чтобы получить отсортированную копию списка без изменения оригинала, используйте функцию sorted()
:
for x in sorted(mylist):
print x
Однако приведенные выше примеры немного наивны, поскольку они не учитывают языковой стандарт и выполняют сортировку с учетом регистра. Вы можете воспользоваться дополнительным параметром key
, чтобы указать пользовательский порядок сортировки (альтернатива, использующая cmp
, является устаревшим решением, так как его нужно оценивать несколько раз - key
вычисляется только один раз для элемента).
Таким образом, для сортировки в соответствии с текущей локалью, принимая во внимание языковые правила (cmp_to_key
- вспомогательная функция из functools):
sorted(mylist, key=cmp_to_key(locale.strcoll))
И, наконец, если вам нужно, вы можете указать пользовательский языковой стандарт для сортировки:
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # vary depending on your lang/locale
assert sorted((u'Ab', u'ad', u'aa'),
key=cmp_to_key(locale.strcoll)) == [u'aa', u'Ab', u'ad']
Последнее примечание: вы увидите примеры сортировки без учета регистра, в которой используется метод lower()
- они некорректны, поскольку работают только для подмножества символов ASCII. Эти два не подходят для любых неанглийских данных:
# this is incorrect!
mylist.sort(key=lambda x: x.lower())
# alternative notation, a bit faster, but still wrong
mylist.sort(key=str.lower)