#python #python-3.x #sorting
#python #python-3.x #сортировка
Вопрос:
Изо всех сил пытаюсь создать функцию определения того, как возвращать три принятых целых числа и в кортеж в отсортированном формате от наименьшего к наибольшему, в зависимости от того, верно ли значение по возрастанию. Как бы я это сформулировал? Стал бы я использовать цикл for с операторами if, независимо от того, является ли он возрастающим? У меня есть общая идея для сортировки с использованием «отсортированных (список)» и «отсортированных (список, обратный = True)».
Код функции, который у меня пока есть:
def sort3(x,y,z, ascending=True):
list(x,y,z)
return lst
Тест должен быть таким sort3(5,3,4) возвращает (3,4,5)
Комментарии:
1.
return tuple(sorted([x,y,z], reverse=(not ascending)))
Однако вы просто переписываетеsorted
функцию…2. На самом деле он возвращает
lst
, который не определен.3. @JohnGordon хороший улов.
4. @JohnGordon отметил.
Ответ №1:
Это должно сработать:
def sort3(x, y, z, ascending=True):
return tuple(sorted([x, y, z], reverse=not ascending))
Комментарии:
1. Спасибо, очень упрощено. Думаю, я слишком много думал об этом.
Ответ №2:
Теоретически вы могли бы сделать это с помощью серии if
инструкций, однако в Python есть встроенные функции, которые могут выполнить эту задачу для вас намного проще.
Попробуйте использовать sorted()
функцию (которая возвращает объект типа списка) в сочетании с tuple()
функцией, чтобы преобразовать этот список в кортеж.
Ответ №3:
def sort3(x, y, z):
d = [x, y ,z]
return tuple(sorted(d))
Разве этого недостаточно?