Fungsi diurutkan () mengembalikan daftar yang diurutkan dari item di iterable.
The sorted()
Fungsi macam unsur-unsur dari iterable diberikan dalam urutan tertentu (baik naik atau turun ) dan kembali diurutkan iterable sebagai daftar.
Sintaks sorted()
fungsinya adalah:
diurutkan (iterable, key = None, reverse = False)
Parameter untuk fungsi sort ()
sorted()
dapat mengambil maksimal tiga parameter:
- iterable - Urutan (string, tuple, daftar) atau koleksi (set, kamus, set beku) atau iterator lainnya.
- reverse (Opsional) - Jika
True
, daftar yang diurutkan dibalik (atau diurutkan dalam urutan menurun). Default-nyaFalse
jika tidak tersedia. - key (Opsional) - Fungsi yang berfungsi sebagai kunci untuk perbandingan pengurutan. Default-nya adalah
None
.
Contoh 1: Urutkan string, list, dan tuple
# 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))
Keluaran
('a', 'e', 'i', 'o', 'u') ('P', 'h', 'n', 'o', 't', 'y') ('a' , 'e', 'i', 'o', 'u')
Perhatikan bahwa dalam semua kasus daftar yang diurutkan dikembalikan.
Catatan: Sebuah daftar juga memiliki metode sort () yang bekerja dengan cara yang sama seperti sorted()
. Satu-satunya perbedaan adalah sort()
metode ini tidak mengembalikan nilai apa pun dan mengubah daftar asli.
Contoh 2: Urutkan dalam urutan menurun
The sorted()
Fungsi menerima reverse
parameter sebagai argumen opsional.
Pengaturan reverse = True
mengurutkan iterable dalam urutan menurun.
# 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))
Keluaran
('u', 'o', 'i', 'e', 'a') ('u', 'o', 'i', 'e', 'a') ('u', 'o' , 'i', 'e', 'a')
Parameter kunci dalam fungsi Python sort ()
Jika Anda menginginkan implementasi Anda sendiri untuk pengurutan, sorted()
terima juga key
fungsi sebagai parameter opsional.
Berdasarkan nilai yang dikembalikan dari fungsi kunci, Anda dapat mengurutkan iterable yang diberikan.
diurutkan (iterable, key = len)
Di sini, len()
adalah fungsi bawaan Python untuk menghitung panjang suatu objek.
Daftar ini diurutkan berdasarkan panjang elemen, dari jumlah terendah hingga tertinggi.
Contoh 3: Urutkan daftar menggunakan sort () yang memiliki fungsi kunci
# 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)
Keluaran
Daftar yang diurutkan: ((4, 1), (2, 2), (1, 3), (3, 4))
Contoh 4: Menyortir dengan banyak tombol
Misalkan kita memiliki daftar berikut:
# 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) )
Kami ingin mengurutkan daftar sedemikian rupa sehingga siswa dengan nilai tertinggi berada di awal. Jika siswa memiliki nilai yang sama, mereka harus disortir sehingga peserta yang lebih muda diutamakan.
Kita dapat mencapai jenis pengurutan ini dengan beberapa kunci dengan mengembalikan tupel alih-alih angka.
Dua tupel dapat dibandingkan dengan membandingkan elemennya mulai dari yang pertama. Jika ada seri (elemen sama), elemen kedua dibandingkan, dan seterusnya.
>>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True
Mari gunakan logika ini untuk membangun logika pengurutan kita.
# 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)
Keluaran
(('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )
Karena fungsi logika pengurutan kecil dan muat dalam satu baris, lambda
fungsi digunakan di dalam key
daripada meneruskan nama fungsi yang terpisah.
Program di atas dapat ditulis menggunakan lambda
fungsi sebagai berikut:
# 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)
Keluaran
(('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )
Untuk mempelajari lebih lanjut tentang fungsi lambda, kunjungi Python Lambda Functions.