#python #python_3x
Как преобразовать строку, состоящую из слов разделенных пробелами, в список, и отсортировать полученный список в лексикографическом порядке? Дана строка из слов, разделенных пробелами: s = 'abc a bCd bC AbC BC BCD bcd ABC' преобразовываем ее в список, с разделителем "пробел": a = s.split(' ') получаем: ['abc', 'a', 'bCd', 'bC', 'AbC', 'BC', 'BCD', 'bcd', 'ABC'] если теперь сделать так: a = a.sort() print (a) мы не получим ничего, если так: b = a.sort() print (a) получим отсортированный список ['ABC', 'AbC', 'BC', 'BCD', 'a', 'abc', 'bC', 'bCd', 'bcd'] почему так? можно ли как-то совместить sort() и split() в одной строчке?
Ответы
Ответ 1
Потому что a.sort() просто сортирует a (список "просто" становится отсортированным), и ничего не возвращает, а функции не возвращающие ничего в Python по факту возвращают None. Если сделать a = a.sort(), вы сначала отсортируете a, а потом запишите поверх него None. Нужно делать или так: a = a.split(' ') a.sort() print(a) Или так, если вам нужно одной строкой: print(sorted(a.split(' ')) Разница в том, что метод list.sort() меняет исходный список, и ничего не возвращает, а функция sorted() не меняет исходный список, а возвращает его отсортированную копию.Ответ 2
Это просто: a = sorted(s.split(' ')) В обратном порядке: a = sorted(s.split(' '), reverse=True)
Комментариев нет:
Отправить комментарий