Функција сортед () враћа сортирану листу из ставки у итералу.
sorted()
Функција сортира елементе дата итерабле у одређеном редоследу (било пораст или силазно ) и враћа итерабле поредани као листа.
Синтакса sorted()
функције је:
сортирано (итерабле, кеи = Ноне, реверсе = Фалсе)
Параметри за функцију сортед ()
sorted()
може узети највише три параметра:
- итерабле - секвенца (стринг, тупле, листа) или колекција (сет, речник, замрзнути сет) или било који други итератор.
- обрнуто (опционално) - Ако
True
је сортирана листа обрнута (или сортирана у опадајућем редоследу). ПодразумеваноFalse
ако није наведено. - тастер (опционално) - функција која служи као кључ за поређење сортирања. Подразумевано
None
.
Пример 1: Сортирање низа, листе и корпице
# vowels list py_list = ('e', 'a', 'u', 'o', 'i') print(sorted(py_list)) # string py_string = 'Python' print(sorted(py_string)) # vowels tuple py_tuple = ('e', 'a', 'u', 'o', 'i') print(sorted(py_tuple))
Оутпут
('а', 'е', 'и', 'о', 'у') ('П', 'х', 'н', 'о', 'т', 'и') ('а' , 'е', 'и', 'о', 'у')
Приметите да се у свим случајевима враћа сортирана листа.
Напомена: Листа такође има методу сорт () која се изводи на исти начин као и sorted()
. Једина разлика је у томе што sort()
метода не враћа никакву вредност и мења оригиналну листу.
Пример 2: Поредај у опадајућем редоследу
sorted()
Функција прихвата reverse
параметар као изборног аргумент.
Подешавање reverse = True
сортира итерал у падајућем редоследу.
# set py_set = ('e', 'a', 'u', 'o', 'i') print(sorted(py_set, reverse=True)) # dictionary py_dict = ('e': 1, 'a': 2, 'u': 3, 'o': 4, 'i': 5) print(sorted(py_dict, reverse=True)) # frozen set frozen_set = frozenset(('e', 'a', 'u', 'o', 'i')) print(sorted(frozen_set, reverse=True))
Оутпут
('у', 'о', 'и', 'е', 'а') ('у', 'о', 'и', 'е', 'а') ('у', 'о' , „и“, „е“, „а“)
кључ Параметар у функцији Питхон сортед ()
Ако желите сопствену имплементацију за сортирање, sorted()
такође прихвата key
функцију као опционални параметар.
На основу враћене вредности функције кључа, можете сортирати дати итерабил.
сортирано (итерабле, кеи = лен)
Овде len()
је уграђена Питхонова функција за бројање дужине објекта.
Листа је сортирана на основу дужине елемента, од најмањег до највишег броја.
Пример 3: Сортирање листе помоћу сортед () који има функцију кључа
# take the second element for sort def take_second(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key sorted_list = sorted(random, key=take_second) # print list print('Sorted list:', sorted_list)
Оутпут
Сортирана листа: ((4, 1), (2, 2), (1, 3), (3, 4))
Пример 4: Сортирање са више тастера
Претпоставимо да имамо следећу листу:
# Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100, Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) )
Списак желимо да сортирамо на такав начин да је студент са највишим оценама на почетку. У случају да ученици имају једнаке оцене, морају се сортирати тако да млађи учесник дође на прво место.
Ову врсту сортирања можемо постићи са више кључева враћањем корпице уместо броја.
Два туплета могу се упоредити упоређивањем њихових елемената почев од првог. Ако постоји веза (елементи су једнаки), други елемент се упоређује итд.
>>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True
Користимо ову логику за изградњу логике сортирања.
# Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) def sorter(item): # Since highest marks first, least error = most marks error = 100 - item(1) age = item(2) return (error, age) sorted_list = sorted(participant_list, key=sorter) print(sorted_list)
Оутпут
((„Јимми“, 90, 22), („Теренце“, 75, 12), („Давид“, 75, 20), („Алисон“, 50, 18), („Јохн“, 45, 12) )
С обзиром да је логичка функција сортирања мала и стане у један ред, lambda
функција се користи изнутра key
уместо да прослеђује засебно име функције.
Горњи програм се може написати помоћу lambda
функције на следећи начин:
# Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) sorted_list = sorted(participant_list, key=lambda item: (100-item(1), item(2))) print(sorted_list)
Оутпут
((„Јимми“, 90, 22), („Теренце“, 75, 12), („Давид“, 75, 20), („Алисон“, 50, 18), („Јохн“, 45, 12) )
Да бисте сазнали више о ламбда функцијама, посетите Питхон Ламбда функције.