Úvod do třídění v Pythonu

V určitém okamžiku v aplikaci nebo programu musíme třídit data v nějakém pořadí, například třídit zaměstnance podle platu nebo na základě nějakého pořadí, třídit seznam produktů podle ceny produktu a tak všichni. V takovém případě musí vývojář implementovat třídění v programu, pokud vývojář používá programovací jazyk python, implementace bude velmi snadná. Python poskytuje vestavěné funkce pro provádění základního třídění nebo přizpůsobení třídicích funkcí na úrovni granular. V pythonu lze třídit 2 vestavěné funkce.

Uvidíme, jak třídit různé typy dat, třídit data v pořadí přizpůsobení.

  • Musíme provést třídění na sbírce prvků nebo skupin prvků, takže získáme sbírku prvků v nějakém pořadí třídění. Pro třídění je třeba provést srovnání mezi každým prvkem kolekce a srovnání je možné pouze a pouze v případě, že se jedná o stejný datový typ, takže třídění můžeme provést při sběru, pokud se jedná o stejné prvky datového typu, například celé číslo na celé číslo lze s řetězcem porovnat, ale ne celé číslo.
  • Dalším bodem je vytvoření kolekce prvků, v Pythonu máme seznamy, n-tice, množiny a slovníkové datové struktury, které slouží k uložení kolekce prvků. Aby bylo možné provést řazení, musí být základní porozumění tezí. Použijeme Python 3, syntaxe se může mírně lišit, pokud používáte Python 2 a příklad výstupu.

Funkce třídění v pythonu

V pythonu jsou dvě vestavěné třídicí funkce.

  • řadit ()
  • seřazené ()

Níže jsou uvedeny dvě funkce třídění:

1. sort ()

Metoda sort () třídí prvky daného seznamu kolekcí v určitém pořadí vzestupně nebo sestupně.

Syntaxe funkce sort () je:

list.sort(key = …, reverse = …)

  • key - Parametr keyspecify function, který používá pro porovnání řazení.
  • Reverse - zpětný parametr, pokud je true, setřídí se seznam, což znamená, že je seřazeno v sestupném pořadí.

Chcete-li získat popis funkce třídění, použijte příkaz help, jak je uvedeno níže.

>>> lis=(1, 4, 3, 2) >>> help( lis.sort )

Začněme funkci řazení s příkladem.

Příklad č. 1:

l = ( 20, 50, 10, 40, 60 ) print("list = ", l)
l.sort()
print("sorted list = ", l)

Výstup:

Stejně jako ve výše uvedeném kódu se vytvoří netříděný seznam (20, 50, 10, 40, 60) a dále se použije funkce sort (), která třídí seznam ve vzestupném pořadí a nevrací nic.

Dále zkusíme funkci sort () na desítkový nebo plovoucí datový typ.

Příklad č. 2:

l = ( 26.7, 34.23, 67.45, 89.34, 23.18 ) print("list = ", l)
l.sort()
print("sorted list = ", l)

Výstup:

Dále zkusíme funkci sort () na datovém typu char.

Příklad č. 3:

l = ( 'b', 'd', 'a', 'n', 'g') print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Výstup:

Dále zkusíme funkci sort () na datovém typu String.

Příklad č. 4:

l = ( "banana", "apple", "orange", "mango" ) print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Výstup:

Dále zkusíme funkci sort () na různých prvcích datových typů.

Příklad č. 5:

l = ( 89, 56.78, "apple" ) print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Výstup:

Dále zkusíme funkci sort () s argumenty obrácení.

Příklad č. 6:

l = ( 26.7, 34.23, 67.45, 89.34, 23.18 ) print("liist = ", l)
l.sort( reverse = True )
print("sorted liist = ", l)

Výstup:

Ve výše uvedeném kódu je vytvořen netříděný seznam (26.7, 34.23, 67.45, 89.34, 23.18) a dále použít funkci sort () s reversem = True, výchozí hodnota reverzu je False, která třídí seznam v obráceném pořadí nebo sestupné pořadí.

Dále zkusíme funkci sort () s klíčovými argumenty:

Klíčový parametr je nejdůležitější součástí funkce sort (). Do tohoto argumentu je předána funkce, která bude použita pro každý prvek v seznamu, který je tříděn, aby se uspořádala ve výsledném pořadí.

Začněme příkladem, předpokládejme, že máme seznam řetězců a chceme třídit seznam podle délky řetězců v seznamu ve vzestupném pořadí (nejkratší k nejdelší délce). Vestavěná funkce len () v pythonu vrací délku řetězce, takže len () lze použít k předání argumentu klíče.

Příklad č. 7:

word = "Hello"
length = len(word)
print( "The length of word is ", length)
l = ( "aaa", "bbbbb", "cc", "ddd" ) print("liist = ", l)
print( "The length of list is ", len(l))
# length of the list is 4, because it contains 4 elements
# Now we sort the list based on the length of the list elements
l.sort( key = len )
print("Sorted liist = ", l)
# Now we sort the list based on the length of the list elements and reverse
l.sort(key = len, reverse = True)
print("Sorted liist with reverse = ", l)

Výstup:

Výsledné pořadí list.sort (key = len) je seznam řetězců řazení v pořadí od nejkratší po nejdelší. Zatímco list.sort (key = len, reverse = True) vedoucí k pořadí seznamu je nejdelší až nejkratší. Délka každého prvku v seznamu je určena funkcí len ().

Dále zkusíme funkci sort () s předáním klávesy uživatelem definující funkci:

Příklad č. 8:

l = ( 'banana', 'orange', 'apple' ) print("liist = ", l)
# function return second element
def sort_onSecondChar(word):
return word(1) l.sort( key = sort_onSecondChar )
print("Sorted liist based on second character = ", l)
# Now we sort the list based on the length of the list elements and reverse
l.sort( key = sort_onSecondChar, reverse = True)
print("Sorted liist based on second character with reverse = ", l)

Výstup:

Výsledné pořadí list.sort (key = sort_onSecondChar)) je seznam řetězců řazení v pořadí vzestupně na základě druhého znaku. Zatímco list.sort (key = sort_onSecondChar, reverse = True) výsledné pořadí seznamu klesá na základě druhého znaku. Třídění každého prvku v seznamu určuje uživatel, aby definoval funkci sort_onSecondChar ().

2. seřazené ()

Volání funkce sort () v seznamu nebo kolekci vrací nový seřazený seznam. Funkce sort () neupravuje ani nemění seznam, na který je volána, ale v důsledku toho vrací seřazený seznam.

Funkce Syntaxe sort ():

sorted(iterable, key, reverse)

  • iterable - seznam, n-tice, řetězec, množina, zmrazená množina, slovník libovolné kolekce nebo iterovatelné, které je třeba seřadit.
  • obráceně - vzad určete, zda se setříděný seznam má obrátit nebo ne (tj. sestupně). to je
  • key - zadejte funkci jako klíč k porovnání pro řazení. Je volitelný .

Chcete-li získat popis funkce třídění, použijte příkaz help, jak je uvedeno níže.

Zvažte příklady:

Příklad č. 9:

l = ( 2, 1, 3, 6, 5, 4 ) print("list = ", l)
sorted(l)
print( "The sorted list = ", l)

Výstup:

Všimněte si, že můžeme také použít funkci list.sort () k provedení stejného, ​​ale rozdíly jsou, funkce sort () modifikuje seznam na místě sám a vrátí None jako výsledek výstupu. Dalším rozdílem funkce list.sort () je to, že se může vztahovat na jediný seznam, zatímco seřazené () lze použít na jakoukoli kolekci nebo iterovatelnou.

Podívejme se na příklad, kde vytvoříme n-tici (víme, že pro vytvoření n-tice použijte složené závorky a tuple, jsou-li uspořádány, ukládají duplikáty, nelze použít na index a je neměnné) a aplikují tříděnou () funkci .

Příklad č. 10:

t = ( 60, 20, 40, 10 )
print("Tuple = ", t)
re=sorted(t)
#print return of sorted()
print( "The return sorted list of sorted() = ", re)
#we check what is there in t
print( "After sorted tuple = ", t)

Výstup:

Pokud funkce sort () aplikovaná na tuple, způsobí chybu „AttributeError: 'tuple' nemá atribut 'sort' '.

Funkce sort () se tedy nemůže vztahovat na n-tici, ani u ostatních kolekcí kromě seznamu.

Dále uvidíme několik příkladů s různými typy dat:

Příklad č. 11:

l = ( 2.89, 56.34, 45.23 ) print("List of floating numbers = ", l)
re=sorted(l)
#print return of sorted()
print( "The return list of sorted() floating numbers = ", re)
lc = ( 'l', 'e', 'g', 'a', 'd' ) print("List of characters = ", lc)
re=sorted(lc)
#print return of sorted()
print( "The return list of sorted() characters = ", re)

Výstup:

Dále vyzkoušíme funkci sort () s opačným parametrem:

Uvažujme příklad:

Příklad č. 12:

l = ( 2, 1, 3, 6, 5, 4 ) print("List = ", l)
re=sorted(l, reverse=True )
#print return of sorted()
print( "The return list of sorted() with reverse = ", re)

Výstup:

Dále uvidíme funkci sort () s parametrem key, v níže kódu přichyceném předávání funkce len () do parametru key, takže funkce sort () vrátí seznam v pořadí řazení na základě délky prvků.

Příklad č. 13:

l = ('aaaa', 'bb', 'ccc', 'ddddd') print("List = ", l)
re=sorted(l, key = len )
#print return of sorted()
print( "The return list of sorted() with key = ", re)

Výstup:

Dále uvidíme funkci sort () s parametrem key, jak uživatel definuje funkci, v níže kódu přichycenou předáním funkce returnSecond () do parametru key. Funkce returnSecond () je uživatel, který definuje funkci, která právě vrací druhý prvek, takže funkce sort () vrací nový tříděný seznam v pořadí řazení na základě druhého prvku n-tice. Pokud chceme seřadit na základě prvního prvku, pak upravte funkci returnSecond () a vraťte první prvek jako (L (0)).

Příklad č. 14:

# return second element for sort
def returnSecond( L ):
return L(1) # list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = returnSecond (returnSecond function which return second element so sort done based on seceond elemet)
sortedList = sorted(list, key = returnSecond)
# print list
print('The sorted list:', sortedList)

Výstup:

Výše uvedený kód měníme pomocí funkce lambda (funkce lambda je anonymní funkce, simuluje to samé jako vložené funkce C a C ++).

Příklad č. 15:

# list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = lambda x : x(1) (lambda function which return second element so sort done based on second element)
sortedList = sorted( list, key = lambda x : x(1))
print( "The sorted list = ", sortedList)

Výstup:

Výše uvedený kód se změní tak, aby seřadil na základě prvního prvku změnou funkce lambda.

Příklad č. 16:

# list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = lambda x : x(0) (lambda function which return first element so sort done based on first element)
sortedList = sorted( list, key = lambda x : x(0))
# print list
print('The sorted list:', sortedList)

Výstup:

Nyní vytvořme seznam podrobností o studentech a pro uložení podrobností každého studenta použijeme n-tici. Jedna n-tice obsahuje jeden studentský záznam, prvním prvkem n-tice je jméno studenta, druhým prvkem je žádné číslo studenta a třetím prvkem jsou celkové známky studenta. Dále chceme uložit informace o studentovi v pořadí podle jejich známek, takže začněme kódování.

Příklad č. 17:

students = ( ('john', 1, 60), ('jane', 2, 70), ('dave', '3', 70.5), ('joseph', 1, 92) ) print( "The Student List = ", students)
# sorting the student list of tuple based on the third element that is marks
sortedlist = sorted(students, key=lambda stud : stud(2))
print("The sorted list = ", sortedlist)
#reverese
sortedlist = sorted(students, key=lambda stud : stud(2), reverse=True)
print("The sorted list with reverse=True ", sortedlist)
# Display the student name and marks in sorting order of their marks
sortedlist = sorted(students, key=lambda stud : stud(2))
print("The student names and marks in order of their marks")
print("name", "marks")
for x in sortedlist:
print(x(0), x(2))

Výstup:

Závěr

Funkce sort () a sort () slouží k třídění kolekce. List.sort () upraví seznam sám, zatímco seřazený (seznam) neupravený do seznamu vrací nový seřazený seznam. Funkce sort () se vztahuje pouze na seznam, zatímco funkce sort () lze použít na všechny kolekce, jako je seznam, n-tice, slovník a všechny.

Doporučené články

Toto je průvodce tříděním v Pythonu. Zde diskutujeme dvě vestavěné funkce třídění v Pythonu s programem a výstupem. Další informace naleznete také v následujícím článku -

  1. Proměnné Pythonu
  2. Destruktor v Pythonu
  3. Připojení k databázi Python
  4. Editory Pythonu
  5. Datové typy PL / SQL
  6. Různé typy dat SQL s příklady

Kategorie: