Существует ли версия list.sort (), которая возвращает отсортированный список? - PullRequest
4 голосов
/ 23 февраля 2012

Я пытаюсь выполнить встроенную операцию, где мне нужно отсортировать список как часть процесса.Функция sort объектов типа list работает в списке, в который она была вызвана, вместо возврата результата.

Документы Python подтверждают это:

list.sort ()
Сортировка элементов списка по месту.

Я пробовал это через командную строку Python, и вот результат:

>>> a = list("hello").sort()
>>> print a
None
>>> b = list("hello")
>>> print b
['h', 'e', 'l', 'l', 'o']
>>> b.sort()
>>> print b
['e', 'h', 'l', 'l', 'o']

Есть ли способ пропустить эту проблему и сделать возможной следующую строчку?

result = list(random.choice(basesalts)).sort()

Использование приведенного выше кода поможет мне уменьшить длину и подробность моего кода.

Ответы [ 3 ]

13 голосов
/ 23 февраля 2012

Есть встроенный sorted():

>>> a = sorted(list('hello'))
>>> a
['e', 'h', 'l', 'l', 'o']

Также обратите внимание, что вам больше не нужно list():

>>> sorted('hello')
['e', 'h', 'l', 'l', 'o']

, так какbasesalts кажется списком строк, вы можете просто сделать:

result = sorted(random.choice(basesalts))

Если это тот тип вывода, который вы ищете.

5 голосов
/ 23 февраля 2012

Использовать отсортировано .

Возвращает новый отсортированный список из элементов в итерируемых.

>>> a = sorted(list('hello'))
>>> a
['e', 'h', 'l', 'l', 'o']
>>>

Разница в том, что метод list.sort () определен только для списков. Напротив, функция sorted () принимает любую итерацию.

Итак, вы можете сделать

>>> a = sorted('hello')
>>> a
['e', 'h', 'l', 'l', 'o']
>>>

Взгляните на эту прекрасную статью Сортировка мини-КАК .

0 голосов
/ 23 февраля 2012

Сортировка это ваш друг здесь.Это не функция-член класса списка, это встроенная функция, которая принимает список в качестве аргумента.

В списке классов нет функции сортировки.

list1 = [ 1, 4, 5, 2]
print sorted(list1)

>> [1, 2, 4, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...