Python memiliki dua macam: metode sortir (atau "fungsi anggota") dan fungsi sortir . Metode pengurutan beroperasi pada konten objek bernama - menganggapnya sebagai tindakan yang diambil objek untuk memesan ulang sendiri . Fungsi sortir adalah operasi atas data yang diwakili oleh suatu objek dan mengembalikan objek baru dengan konten yang sama dalam urutan diurutkan.
Diberikan daftar bilangan bulat bernama ldaftar itu sendiri akan disusun ulang jika kita memanggil l.sort():
>>> l = [1, 5, 2341, 467, 213, 123]
>>> l.sort()
>>> l
[1, 5, 123, 213, 467, 2341]
Metode ini tidak memiliki nilai balik. Tetapi bagaimana jika kita mencoba menetapkan hasil l.sort()?
>>> l = [1, 5, 2341, 467, 213, 123]
>>> r = l.sort()
>>> print(r)
None
rsekarang sama dengan tidak ada. Ini adalah salah satu dari detail-detail aneh dan agak menjengkelkan yang mungkin akan dilupakan oleh seorang programmer setelah periode ketidakhadiran dari Python (itulah sebabnya saya menulis ini, jadi saya tidak lupa lagi).
Fungsi sorted(), di sisi lain, tidak akan melakukan apa pun untuk isi l, tetapi akan mengembalikan daftar baru yang disortir dengan konten yang sama seperti l:
>>> l = [1, 5, 2341, 467, 213, 123]
>>> r = sorted(l)
>>> l
[1, 5, 2341, 467, 213, 123]
>>> r
[1, 5, 123, 213, 467, 2341]
Sadarilah bahwa nilai yang dikembalikan adalah tidak sebuah salinan dalam , jadi berhati-hati tentang operasi sisi-effecty atas unsur-unsur yang terkandung dalam daftar seperti biasa:
>>> spam = [8, 2, 4, 7]
>>> eggs = [3, 1, 4, 5]
>>> l = [spam, eggs]
>>> r = sorted(l)
>>> l
[[8, 2, 4, 7], [3, 1, 4, 5]]
>>> r
[[3, 1, 4, 5], [8, 2, 4, 7]]
>>> spam.sort()
>>> eggs.sort()
>>> l
[[2, 4, 7, 8], [1, 3, 4, 5]]
>>> r
[[1, 3, 4, 5], [2, 4, 7, 8]]