Python disusun ()

Fungsi diurutkan () mengembalikan senarai yang disusun dari item-item yang dapat diulang.

Yang sorted()fungsi menyusun unsur-unsur yang iterable diberi dalam susunan yang tertentu (sama ada menaik atau menurun ) dan pulangan disusun iterable sebagai satu senarai.

Sintaks sorted()fungsi adalah:

 disusun (boleh diulang, kunci = Tiada, terbalik = Salah)

Parameter untuk fungsi yang disusun ()

sorted() boleh mengambil maksimum tiga parameter:

  • iterable - Urutan (rentetan, tuple, senarai) atau koleksi (set, kamus, set beku) atau iterator lain.
  • terbalik (Pilihan) - Jika True, senarai yang disusun dibalikkan (atau disusun mengikut urutan menurun). Lalai Falsesekiranya tidak disediakan.
  • kunci (Pilihan) - Fungsi yang berfungsi sebagai kunci untuk perbandingan jenis. Lalai untuk None.

Contoh 1: Susun rentetan, senarai, 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))

Pengeluaran

 ('a', 'e', ​​'i', 'o', 'u') ('P', 'h', 'n', 'o', 't', 'y') ('a' , 'e', ​​'i', 'o', 'u')

Perhatikan bahawa dalam semua kes bahawa senarai yang disusun dikembalikan.

Catatan: Senarai juga mempunyai kaedah sort () yang berfungsi dengan cara yang sama seperti sorted(). Satu-satunya perbezaan ialah sort()kaedah ini tidak mengembalikan nilai dan mengubah senarai asalnya.

Contoh 2: Susun mengikut tertib menurun

Yang sorted()fungsi menerima suatu reverseparameter sebagai hujah pilihan.

Menetapkan reverse = Truemengurutkan mengikut 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))

Pengeluaran

 ('u', 'o', 'i', 'e', ​​'a') ('u', 'o', 'i', 'e', ​​'a') ('u', 'o' , 'i', 'e', ​​'a')

Parameter kunci dalam fungsi Python disusun ()

Sekiranya anda menginginkan implementasi anda sendiri untuk disortir, sorted()juga menerima keyfungsi sebagai parameter pilihan.

Berdasarkan nilai fungsi kunci yang dikembalikan, anda dapat menyusun jadual yang diberikan.

 disusun (boleh diulang, kunci = len)

Di sini, len()adalah fungsi bawaan Python untuk mengira panjang objek.

Senarai disusun berdasarkan panjang elemen, dari kiraan terendah hingga tertinggi.

Contoh 3: Susun senarai menggunakan disusun () yang mempunyai fungsi utama

 # 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)

Pengeluaran

 Senarai disusun: ((4, 1), (2, 2), (1, 3), (3, 4))

Contoh 4: Menyusun dengan beberapa kekunci

Mari kita anggap bahawa kita mempunyai senarai 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 menyusun senarai sedemikian rupa sehingga pelajar yang mendapat markah tertinggi pada awalnya. Sekiranya pelajar mempunyai markah yang sama, mereka mesti disusun supaya peserta yang lebih muda mendahului.

Kita dapat mencapai penyortiran jenis ini dengan beberapa kunci dengan mengembalikan tuple dan bukannya nombor.

Dua tupel dapat dibandingkan dengan membandingkan elemennya bermula dari yang pertama. Sekiranya ada tali (elemen sama), elemen kedua dibandingkan, dan seterusnya.

 >>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True

Mari gunakan logik ini untuk membina logik penyusun kami.

 # 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)

Pengeluaran

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Oleh kerana fungsi logik penyortiran kecil dan sesuai dalam satu baris, lambdafungsi digunakan di dalam keydan bukan meneruskan nama fungsi yang terpisah.

Program di atas boleh ditulis menggunakan lambdafungsi dengan cara 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)

Pengeluaran

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Untuk mengetahui lebih lanjut mengenai fungsi lambda, lawati Fungsi Lamby Python.

Artikel menarik...