Diurutkan Python ()

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-nya Falsejika 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 reverseparameter sebagai argumen opsional.

Pengaturan reverse = Truemengurutkan 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 keyfungsi 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, lambdafungsi digunakan di dalam keydaripada meneruskan nama fungsi yang terpisah.

Program di atas dapat ditulis menggunakan lambdafungsi 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.

Artikel yang menarik...