Cортировка по длине слова

490 просмотра
0
0 Комментариев

Не пойму, почему код не работает. Может я неверно проверяю.

def get_min_len_word(string_list):
   return string_list.sort(key=len)
 
print(get_min_len_word(["bb", "aa", "fkha", "loinwnkf", "kaka, kfj"]))

На выходе список без изменений.


Добавить комментарий

3 Answers

Python Опубликовано 09.12.2018
0

Имя функции get_min_len_word() значит что-то другое чем ваша функция делает.

Может быть что ваша программа (после исправления) не удовлетворяет задаванию а вы хотели

def get_min_len_word(string_list):
    return sorted(string_list, key=len)[0]         # первый элемент упорядоченного списка

Добавить комментарий
0

list.sort только сортирует список, а возвращает None.
Можно сделать так:

def get_min_len_word(string_list):
    string_list.sort(key=len)
    return string_list

Добавить комментарий
0

Используйте sorted вместо sort:

def get_min_len_word(string_list):
   return sorted(string_list, key=len)

Разница в том, что sort сортирует исходный список, и ничего не возвращает. А sorted не изменяет исходный список, а возвращает его отсортированную копию.

На ваших данных:

>>> print(get_min_len_word(["bb", "aa", "fkha", "loinwnkf", "kaka, kfj"]))
['bb', 'aa', 'fkha', 'loinwnkf', 'kaka, kfj']

Видим, что ничего не поменялось. На самом деле все правильно, т.к. ваш исходный список и так отсортирован по возрастанию длины элементов (обратите внимание, что "kaka, kfj" — это один элемент списка с длиной 9).

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up