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 l
daftar 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
r
sekarang 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]]