Како сортирати листе у Питхон-у

Овај чланак ће вас научити како да сортирате листу у Питхон-у.

У Питхон-у можете користити метод сорт() да сортирате листу на месту. Или можете користити уграђену сортед() функцију да добијете сортирану копију листе.

У овом водичу ћете научити:

  • Синтакса методе сорт() и функције сортед().
  • Примери кодирања сортирања листа у растућем и опадајућем редоследу
  • Прилагодите сортирање помоћу кључног параметра
  • Разлика између сорт() и сортед()

Почнимо!👩🏽‍💻

Синтакса Питхон сорт() методе

Метода сорт() делује на Питхон листу. И сортира листу на месту – и мења оригиналну листу.

Синтакса за Питхон-ов метод сорт() је:

<list>.sort(reverse = True | False, key = <func>)

Хајде да сада рашчланимо горњу синтаксу.

  • <лист> је било који важећи објекат Питхон листе.
  • реверсе је опциони параметар који узима или Тачно или Нетачно.
  • Подразумевана вредност реверсе је Фалсе, а листа је сортирана узлазним редоследом. Дајте Тачно да бисте сортирали листу у опадајућем редоследу.
  • кључ је такође опциони параметар који је подешен на <фунц>.
  • <фунц> може бити уграђена функција или функција коју дефинише корисник.

У следећем одељку ћете почети да кодирате једноставне примере.

Како сортирати Питхон листу у растућем редоследу

Размотрите листу бројева. Да бисте сортирали листу у растућем редоследу, можете позвати метод сорт() на листи.

▶ Покрените следећи исечак кода.

nums = [25,13,6,17,9]
nums.sort()
print(nums)

# Output: [6, 9, 13, 17, 25]

Бројеви листе су сортирани узлазним редоследом, а оригинална листа је измењена. Ово се зове сортирање на месту.

Како сортирати Питхон листу у опадајућем редоследу

Да бисте сортирали листу у опадајућем редоследу, подесите реверсе на Тачно, као што је приказано испод.

nums = [25,13,6,17,9]
nums.sort(reverse = True)
print(nums)

# Output: [25, 17, 13, 9, 6]

Можете видети да је листа сада сортирана у опадајућем редоследу.

Како користити кључ са Питхон методом сорт()

У овом одељку, хајде да користимо кључни параметар и прилагодимо сортирање.

Овде је мод5() функција која узима број к и враћа остатак када се број к подели са 5.

def mod5(x):
  return x % 5 

И желели бисмо да користимо горњу функцију као кључ.

Сада покрените следећу ћелију кода.

nums = [25,13,6,17,9]
nums.sort(key = mod5)
print(nums)

# Output: [25, 6, 17, 13, 9]

Одвојите минут да анализирате излаз.

Обратите пажњу како уместо редовног сортирања, сада прилагођавате сортирање према кључу који је мод5.

  • Број који оставља минимални остатак када се подели са 5 сада је први.
  • А број који оставља највећи остатак када се подели са 5 је последњи елемент у сортираној листи.

Да бисте потврдили да је то случај, покрените следећи исечак кода.

nums = [25,13,6,17,9]

for num in nums:
  print(f"{num} leaves remainder {num%5} when divided by 5")

# Output
25 leaves remainder 0 when divided by 5
13 leaves remainder 3 when divided by 5
6 leaves remainder 1 when divided by 5
17 leaves remainder 2 when divided by 5
9 leaves remainder 4 when divided by 5

5 дели тачно 25, а остатак је 0. Дакле, то је први елемент у сортираној листи. 6 оставља остатак 1, тако да је то други елемент, и тако даље. 9 оставља остатак 4 када се подели са 5, и то је последњи елемент у сортираној листи.

Уместо дефинисања посебне функције, можете користити ламбда функције. У Питхон-у, ламбда су анонимне функције у једном реду. ламбда аргс : израз враћа израз израчунат на основу аргс.

Сада, хајде да поново напишемо горње сортирање користећи ламбда израз, као што је приказано испод.

nums = [25,13,6,17,9]
nums.sort(key = lambda x:x%5)
print(nums)

# Output: [25, 6, 17, 13, 9]

До сада сте научили како да сортирате листу бројева. Затим, да видимо како можете сортирати листу стрингова у Питхон-у.

Како сортирати Питхон листу по абецедном реду

У овом одељку ћете научити да сортирате листу низова — са примерима инспирисаним Харијем Потером. ✨

У нашем примеру, студенти су листа ученика у Хогвортсу. И желели бисмо да их сортирамо по абецедном реду њихових имена.

Када сортирате листу стрингова, подразумевано сортирање је по абецедном реду.

students = ["Harry","Ron","Hermione","Draco","Cedric"]

Одштампајмо сортирану листу да бисмо проверили резултат сортирања.

students.sort()
print(students)

# Output
['Cedric','Draco', 'Harry', 'Hermione', 'Ron']

Како сортирати Питхон листу обрнутим абецедним редом

Да бисте сортирали листу обрнутим абецедним редом, поставите реверсе = Тачно, као што је приказано у исечку кода испод.

students.sort(reverse = True)
print(students)

# Output
['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']

Из излаза можете видети да је листа заиста сортирана обрнутим редоследом.

Како се користи сортирање за прилагођавање кључних параметара

У овом одељку, хајде да прилагодимо сортирање помоћу опционог кључног параметра.

Размотрите следећу листу, куће.

houses = [
            {1:"Draco","house":"Slytherin"},
            {2:"Harry","house":"Gryffindor"},
            {3:"Cedric","house":"Hufflepuff"}
         ]

Овде, куће је листа речника. Сваки речник садржи два пара кључ/вредност, један означава имена ученика, а други кућу којој припадају.

Сада бисмо желели да сортирамо ову листу кућа по абецедном реду кућа којима припадају.

Као што сте до сада могли да претпоставите, требало би да поставимо кључни параметар за кућу одређених ученика.

Да бисте добили кућу сваког ученика, можете дефинисати функцију ретурнХоусе(), као што је приказано испод.

def returnHouse(student):
  return student['house']

Ова функција враћа кућу којој одређени ученик припада.

Сада можете позвати метод сорт() на листи кућа, као што је приказано.

houses.sort(key=returnHouse)

У доњем резултату, приметите како је листа сортирана по кући, а не по именима ученика. Зато имамо Грифиндор, Хафлпаф и Слизерин — по абецедном реду.

print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

Да бисте у складу са тим дефинисали кључни параметар, можете користити и ламбда функцију. За сваку ставку листе, ова функција враћа кућу за ту ставку листе.

▶ Покрените следећу ћелију кода да бисте то потврдили.

houses.sort(key=lambda student:student["house"])
print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

У свим досадашњим примерима, користили сте метод сорт() на листи. И сада знате да то мења оригиналну листу.

Шта ако желите да задржите оригиналну листу онакву каква јесте, али да добијете сортирану копију листе?

Па, у Питхон-у, можете користити сортед() функцију да то урадите.

Синтакса Питхон сортед() функције

Функција сортед() узима листу или било коју колекцију као аргумент. И враћа сортирану копију листе — а оригинална листа није модификована.

Синтакса за Питхон-ову сортед() функцију је:

<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)

Приметите како је синтакса веома слична методи сорт() коју смо видели раније.

  • <лист> је било који важећи објекат Питхон листе и обавезан је параметар.
  • реверс и кеи су опциони параметри

Напомена: За разлику од методе сорт() која делује само на листама, сортед() функција се може користити за сортирање било које Питхон итерабле, као што су листе, стрингови и речници.

Како сортирати Питхон листу користећи сортед() функцију

#1. У овом примеру, нумс је листа бројева.

Можете позвати сортед() функцију са бројевима као аргументом. И доделите га листи сортед_нумс1.

nums = [25,13,6,17,9]
sorted_nums1 = sorted(nums)
print(sorted_nums1)

# Output: [6, 9, 13, 17, 25]

У излазу изнад, можете видети да су бројеви сортирани узлазним редоследом подразумевано.

Такође, приметите да оригинална листа нумс није измењена—јер сортед() враћа нову листу. Ово је потврђено у наставку.

print(nums)
 # Output: [25, 13, 6, 17, 9]

#2. Сада подесите опциони параметар реверсе на Труе и добијте сортед_нумс2.

Као што је приказано у ћелији кода испод, сортед_нумс2 је нова листа са ставкама сортираним у опадајућем редоследу.

sorted_nums2 = sorted(nums,reverse = True)
print(sorted_nums2)

# Output: [25, 17, 13, 9, 6]

#3. У овом примеру, хајде да радимо са листом стрингова.

Као иу претходним примерима, позивање функције сортед() враћа нову листу. И ставке су сортиране по абецедном реду.

fruits = ['pears','strawberry','apple','pineapple','blueberry']
sorted_fr1 = sorted(fruits)
print(sorted_fr1)

# Output:
['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']

#4. Сада, хајде да прилагодимо сортирање помоћу опционог кључног параметра. Поставите кључ на лен. Ово ће сортирати листу на основу дужине стрингова.

Напомена: У Питхон-у, уграђена функција лен() узима све итерабле, као што су листе, стринг, торке и тако даље. И враћа дужину итерабле.

Стринг са најкраћом дужином појављује се први у сортираној листи, а најдужи низ се појављује на крају сортиране листе.

fruits = ['pear','strawberry','apple','pineapple','blueberry']
sorted_fr2 = sorted(fruits,key=len)
print(sorted_fr2)

# Output:
['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']

У излазу изнад, крушка је најкраћа жица, а јагода најдужа.

Питхон сорт() метод наспрам сортед() функција

До сада сте научили како да користите методу сорт() као и функцију сортед(). У овом одељку, хајде да набројимо разлике између ова два метода.

Питхон .сорт() МетодПитхон сортед() Функција Сортира листу на месту—модификује оригиналну листу Враћа нову сортирану листу Ради само са Питхон листамаРади са Питхон итераблес као што су листе, стрингови и друге колекције Има тип враћања НонеРетурн сортирану копију и

Сумминг Уп 👩‍🏫

Надам се да вам је овај водич за Питхон листе био од помоћи.

Хајде да брзо сумирамо оно што смо покрили.

  • Користите лист.сорт(реверсе = Труе | Фалсе, кеи = <фунц>) са опционим параметрима реверсе и кеи да сортирате листу на месту.
  • Користите сортед(лист, реверсе = Тачно | Фалсе, кеи = <фунц>) да бисте добили сортирану копију листе.

Сада када сте научили како да сортирате Питхон листе, научите о разумевању листе у Питхон-у. Или бисте такође могли да научите како да рукујете датотекама или радите са ЈСОН датотекама у Питхон-у.

Можете испробати горе наведене примере у вдзвдз Онлине Питхон компајлеру.

  Како да сакријем Амазон поруџбине