Как отсортировать список в питоне без sort
Перейти к содержимому

Как отсортировать список в питоне без sort

  • автор:

Python Сортировка списков

Объекты списка имеют метод sort() который по умолчанию сортирует список в алфавитно-цифровом порядке по возрастанию:

Пример

Отсортируйте список по алфавиту:

thislist = [«апельсин», «манго», «киви», «ананас», «банан»]
thislist.sort()
print(thislist)

Пример

Отсортируйте список по цифрам:

thislist = [100, 50, 65, 82, 23]
thislist.sort()
print(thislist)

Сортировать по убыванию

Для сортировки по убыванию используйте аргумент ключевого слова reverse = True :

Пример

Отсортируйте список по убыванию:

thislist = [«апельсин», «манго», «киви», «ананас», «банан»]
thislist.sort(reverse = True)
print(thislist)

Пример

Отсортируйте список по убыванию:

thislist = [100, 50, 65, 82, 23]
thislist.sort(reverse = True)
print(thislist)

Настроить функцию сортировки

Вы также можете настроить свою собственную функцию, используя аргумент ключевого слова key = function .

Функция вернет число, которое будет использоваться для сортировки списка (сначала наименьшее число):

Пример

Отсортируйте список в зависимости от того, насколько число близко к 50:

def myfunc(n):
return abs(n — 50)

thislist = [100, 50, 65, 82, 23]
thislist.sort(key = myfunc)
print(thislist)

Сортировка без учета регистра

По умолчанию метод sort() чувствителен к регистру, в результате чего все заглавные буквы сортируются перед строчными:

Пример

Сортировка с учетом регистра может дать неожиданный результат:

thislist = [«банан», «Апельсин», «Киви», «вишня»]
thislist.sort()
print(thislist)

К счастью, мы можем использовать встроенные функции в качестве ключевых при сортировке списка.

Поэтому, если вам нужна функция сортировки без учета регистра, используйте str.lower в качестве ключевой функции:

Пример

Выполните сортировку списка без учета регистра:

thislist = [«банан», «Апельсин», «Киви», «вишня»]
thislist.sort(key = str.lower)
print(thislist)

Обратный порядок

Что делать, если вы хотите изменить порядок списка, независимо от алфавита?

Метод reverse() меняет текущий порядок сортировки элементов на противоположный.

Пример

Обратный порядок элементов списка:

thislist = [«банан», «Апельсин», «Киви», «вишня»]
thislist.reverse()
print(thislist)

Мы только что запустили
SchoolsW3 видео

ВЫБОР ЦВЕТА

colorpicker

курс сегодня!

Сообщить об ошибке

Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:

Ваше предложение:

Спасибо Вам за то, что помогаете!

Ваше сообщение было отправлено в SchoolsW3.

ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат

SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.

Сортировка по произвольным элементам вложенных списков

В Python можно выполнить сортировку списка на месте с помощью метода sort() :

>>> a = [10,3,4,1,9] >>> a.sort() >>> a [1, 3, 4, 9, 10]

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

Если элементы списка сами представляют собой списки, т. е. являются вложенными списками, то сортировка будет происходить по первым элементам вложенных списков, то есть в случае матрицы по первому столбцу:

>>> a = [[12,101],[2,200],[18,99]] >>> a.sort() >>> a [[2, 200], [12, 101], [18, 99]]

Что делать, если надо отсортировать не по первому столбцу? На этот случай sort() принимает необязательный аргумент key , в котором передается другая функция. Этой другой функции передается очередной элемент списка. Она может сделать с ним что угодно и вернуть что угодно. По этому «что угодно» и происходит сортировка.

Так, например, пользовательская функция может возвращать из переданного ей элемента, представляющего собой вложенный список, любой элемент этого вложенного списка. В свою очередь функция sort() будет сортировать по тем значениям, которые ей возвращаются.

В качестве примера приведем программу, в которой список представляет собой маленькую базу данных. Допустим, каждый элемент содержит сведения о юном спортсмене: имя, возраст, рост и вес. Пользователь может заказать сортировку по любому полю:

a = [['петя',10,130,35], ['вася',11,135,39], ['женя',9,140,33],['дима',10,128,30]] n = input('Сортировать по имени (1), возрасту (2), росту (3), весу (4): ') n = int(n)-1 def sort_col(i): return i[n] a.sort(key=sort_col) for i in a: print("%7s %3d %4d %3d" % (i[0],i[1],i[2],i[3]))

Здесь пользователь вводит номер поля. Число приводится к типу int , и из него вычитается единица, т. к. индексация списка начинается с нуля.

Далее определяется функция sort_col() . Ей передается аргумент i , а она возвращает n -ый элемент этого аргумента. Так, если этой функции передать вложенный список, то она вернет его n -й элемент. В данном случае тот, который хотел пользователь.

В функции sort() указывается пользовательская функция. Когда sort() извлекает очередной элемент списка, в данном случае — вложенный список, то передает этой функции. Получается, что элемент списка подменяется на то, что возвращает пользовательская функция.

В данном случае если пользователь заказывает сортировку по второму столбцу, вывод будет таким:

Сортировать по имени (1), возрасту (2), росту (3), весу (4): 2 женя 9 140 33 петя 10 130 35 дима 10 128 30 вася 11 135 39 

Можно не определять обычную функцию, а использовать lambda-функцию:

a = [['петя',10,130,35], ['вася',11,135,39], ['женя',9,140,33],['дима',10,128,30]] n = input('Сортировать по имени (1), возрасту (2), росту (3), весу (4): ') n = int(n)-1 a.sort(key=lambda i: i[n]) for i in a: print("%7s %3d %4d %3d" % (i[0],i[1],i[2],i[3]))

Кроме того, метод sort() имеет еще один необязательный параметр по ключевому слову — reverse . По умолчанию он равен False . Это значит, что сортировка происходит по возрастанию. Однако если у reverse будет значение True , то сортировка будет обратной, т. е. по убыванию. В измененной программе ниже реализована возможность выбора типа сортировки:

a = [['петя',10,130,35], ['вася',11,135,39], ['женя',9,140,33],['дима',10,128,30]] n = input('Сортировать по имени (1), возрасту (2), росту (3), весу (4): ') n = int(n)-1 t = input('По возрастанию (0), по убыванию (1): ') t = int(t) a.sort(key=lambda i: i[n], reverse=t) for i in a: print("%7s %3d %4d %3d" % (i[0],i[1],i[2],i[3]))

При сортировке по весу по убыванию получим:

Сортировать по имени (1), возрасту (2), росту (3), весу (4): 4 По возрастанию (0), по убыванию (1): 1 вася 11 135 39 петя 10 130 35 женя 9 140 33 дима 10 128 30

Сортировка списка строк в Python

В этом посте мы обсудим, как сортировать список строк в Python.

1. Использование sort() функция

Стандартное решение для сортировки списка строк в Python использует метод sort() функция. Эта функция сортирует список на месте и приводит к стабильной сортировке.

if __name__ == ‘__main__’ :
words = [ ‘D’ , ‘A’ , ‘C’ , ‘B’ ]
words . sort ( )
print ( words ) # [‘A’, ‘B’, ‘C’, ‘D’]

The sort() функция принимает reverse аргумент, который принимает логическое значение. При значении true список сортируется в обратном порядке.

if __name__ == ‘__main__’ :
words = [ ‘D’ , ‘A’ , ‘C’ , ‘B’ ]
words . sort ( reverse = True )
print ( words ) # [‘D’, ‘C’, ‘B’, ‘A’]

2. Использование sorted() функция

The list.sort() Функция изменяет исходный список, поскольку использует алгоритм сортировки на месте. Чтобы получить новую отсортированную копию списка без изменения исходного списка, используйте sorted() встроенная функция.

if __name__ == ‘__main__’ :
words = [ ‘D’ , ‘A’ , ‘C’ , ‘B’ ]
sortedList = sorted ( words )
print ( sortedList ) # [‘A’, ‘B’, ‘C’, ‘D’]

Чтобы отсортировать список в обратном порядке, укажите reverse аргумент как True .

if __name__ == ‘__main__’ :
words = [ ‘D’ , ‘A’ , ‘C’ , ‘B’ ]
sortedListDesc = sorted ( words , reverse = True )
print ( sortedListDesc ) # [‘D’, ‘C’, ‘B’, ‘A’]

Вот и все, что касается сортировки списка строк в Python.

Оценить этот пост

Средний рейтинг 4.81 /5. Подсчет голосов: 21

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

Подписывайся
0 Комментарии
Встроенные отзывы
Просмотреть все комментарии
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации

  • Все проблемы
  • Практика DSA
  • 100 самых популярных задач
  • 50 лучших классических задач
  • Лучшие алгоритмы
  • Компилятор С/С++
  • Компилятор Java
  • Компилятор Python
  • Компилятор JavaScript
  • компилятор PHP
  • Компилятор C#
  • Свяжитесь с нами
  • Политика конфиденциальности
  • условия обслуживания
  • Подпишитесь на новые публикации

Techie Delight © 2023 Все права защищены.

Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно

Как отсортировать числа в порядке возрастания без встроенной sort?

Написать программу с циклами, чтобы расставляла числа в порядке возрастания (не используя Sort)
помогите с кодом нужно написать программу с циклами чтобы расставляла числа например.

Отсортировать числа в порядке возрастания
Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt.

Отсортировать элементы строк матрицы в порядке возрастания, а строки — в порядке возрастания сумм элементов
Задать с клавиатуры количество целочисленных матриц. Данные получить с помощью датчика случайных.

Отсортировать последовательность чисел в порядке возрастания, без использования некоторых функций
Нельзя пользоваться: for, while, sum, reduce, filter, import, eval, sort, exec, compile, single.

Регистрация: 21.12.2011
Сообщений: 60

Лучший ответ

Сообщение было отмечено masasc как решение

Решение

1 2 3 4 5 6 7
a = [5,2,7,4,0,9,8,6] n = 1 while n  len(a): for i in range(len(a)-n): if a[i] > a[i+1]: a[i],a[i+1] = a[i+1],a[i] n += 1

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Отсортировать числа в порядке возрастания методом пузырька
Задано множество из n целых чисел. Число n произвольное. 1. Отсортируйте числа в порядке.

Отсортировать числа методом выбора в порядке возрастания
Дан массив целых чисел А . Отсортировать их методом выбора в порядке возрастания (оформить в виде.

Заданы 3 целых числа, отсортировать в порядке возрастания.
Задание: Задано три целых числа. Необходимо вывести их в порядке возрастания. Числа не превышают.

Отсортировать числа в порядке возрастания дробной части
Дана последовательность вещественных чисел x1,x2,x3. xN с двумя знаками после десятичной точки.

В матрице найти числа, которые делятся на 3 и отсортировать их в порядке возрастания
Задание было написать в С++ код который бы в матрице находил числа которые делятся на 3 и их.

Отсортировать числа в порядке возрастания количества единичных бит в числе
Помогите отсортировать решения задачи (числа J в коде) по возрастанию program Project2; .

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *