Cara Menggunakan Modul Bisect dengan Python

Cara Menggunakan Modul Bisect dengan Python

Artikel ini akan membahas panduan tentang useran modul “Bisect” yang tersedia di library bawaan Python standar. Modul bisect dapat digunakan untuk menjalankan berbagai operasi pada objek iterable tipe daftar yang tersedia dengan Python. Semua contoh kode dalam artikel ini diuji dengan Python 3.9.5 di Ubuntu 21.04.

Tentang Modul Bisect

Modul bagi dua memungkinkan Anda untuk memanggil berbagai metode pada daftar Python dan membantu Anda menjaga agar daftar tetap diurutkan. Ini sangat berguna jika Anda ingin memodifikasi elemen daftar tetapi pada saat yang sama menjaga urutannya. Misalnya, jika Anda ingin menyisipkan elemen dalam daftar, metode bagi dua akan mengembalikan indeks di mana elemen baru dapat dimasukkan sedemikian rupa sehingga setelah penyisipan, daftar akan tetap diurutkan. Sintaks untuk metode Bisect dapat dipahami dengan baik melalui contoh, beberapa di antaranya dibahas di bawah ini:

Memasukkan Elemen ke dalam Daftar Menggunakan Metode Bisect

Perhatikan contoh kode di bawah ini:

import bisect

l = [2, 1, 3, 5]
l.sort()
i = bisect.bisect(l, 4)
print (i)
l.insert(i, 4)
print (l)

Pernyataan pertama mengimpor modul “bagi dua”. Selanjutnya objek tipe daftar “l” didefinisikan. Dalam pernyataan berikutnya, daftar diurutkan dengan memanggil metode “sort” di atasnya. Metode membagi dua dipanggil pada daftar di baris berikutnya. Metode membagi dua mengambil dua argumen, daftar yang ingin dibagi dua dan elemen yang perlu dimasukkan ke dalam daftar sambil menjaga urutan pengurutan. Dalam hal ini, metode bagi dua dipanggil untuk menentukan pada nomor indeks “4” apa yang harus dimasukkan dalam daftar “l” sehingga semuanya tetap teratur setelah penyisipan. Variabel “i” menyimpan nilai indeks yang dikembalikan oleh metode membagi dua. Terakhir, angka 4 dimasukkan ke dalam daftar “l” pada indeks “i” dengan memanggil metode “insert” pada daftar.

Setelah menjalankan contoh kode di atas, Anda akan mendapatkan output berikut:

3
[1, 2, 3, 4, 5]

Angka “3” adalah indeks pada daftar asli dimana angka 4 telah disisipkan. Daftar indeks selalu dimulai dengan nol, maka angka 4 telah disisipkan pada posisi ke-4.

Perhatikan bahwa Jika nomor sudah ada dalam daftar, metode membagi dua menemukan indeks di sebelah kanan nomor yang ada. Perhatikan contoh kode di bawah ini:

import bisect

l = [2, 1, 3, 5, 4]
l.sort()
i = bisect.bisect(l, 4)
print (i)
l.insert(i, 4)
print (l)

Setelah menjalankan contoh kode di atas, Anda akan mendapatkan output berikut:

4
[1, 2, 3, 4, 4, 5]

Modul bagi dua mencakup metode lain yang disebut “bisect_right” yang identik dengan metode “biect”. Anda dapat menggunakan metode ini secara bergantian.

Memasukkan Elemen ke dalam Daftar dari Kiri Menggunakan Metode Bisect

Perhatikan contoh kode di bawah ini:

import bisect

l = [2, 1, 3, 5, 4, 4]
l.sort()
i = bisect.bisect_left(l, 4)
print (i)
l.insert(i, 4)
print (l)

Ini hampir sama dengan contoh sebelumnya, kecuali bahwa alih-alih metode membagi dua, “bisect_left” sekarang digunakan. Dalam kasus elemen yang ada, metode bisect_left menemukan indeks paling kiri. Anda dapat menggunakan indeks ini untuk menambahkan elemen baru di sebelah kiri elemen yang cocok.

Setelah menjalankan contoh kode di atas, Anda akan mendapatkan output berikut:

3
[1, 2, 3, 4, 4, 4, 5]

Angka 4 ditambahkan pada indeks 3, yaitu pada posisi ke-4 dalam daftar karena indeks selalu dimulai dengan nol. Jika Anda menggunakan metode bisect atau bisect_right sebagai gantinya, indeks yang dikembalikan akan berbeda. Perhatikan contoh kode di bawah ini:

import bisect

l = [2, 1, 3, 5, 4, 4]
l.sort()
i = bisect.bisect_right(l, 4)
print (i)
l.insert(i, 4)
print (l)

Setelah menjalankan contoh kode di atas, Anda akan mendapatkan output berikut:

5
[1, 2, 3, 4, 4, 4, 5]

Menggunakan Metode Insort

Modul bagi dua juga menyediakan metode “insort” dan “insort_left” yang dapat digunakan untuk secara langsung memasukkan elemen ke dalam daftar pada posisi yang sesuai. Anda juga dapat menggunakan metode “insort_right” sebagai pengganti metode isnort. Perhatikan contoh kode di bawah ini:

import bisect

l = [2, 1, 3, 5, 4, 4]
l.sort()
bisect.insort(l, 4)
print (l)

Contoh kode sangat mirip dengan contoh sebelumnya. Metode insort membutuhkan dua argumen: daftar yang akan dimodifikasi dan elemen yang akan disisipkan pada posisi yang sesuai. Tidak perlu memanggil metode “insert” pada daftar untuk secara manual memasukkan elemen dalam daftar pada inde
ks yang cocok.

Setelah menjalankan contoh kode di atas, Anda akan mendapatkan output berikut:

[1, 2, 3, 4, 4, 4, 5]

Metode insort hanyalah metode kenyamanan yang setara dengan pernyataan Python berikut (dengan asumsi “l” adalah daftar yang diurutkan):

l.insert(bisect.bisect(l, 4), 4)

Jadi di bawah tenda, insort mengikuti aturan yang sama seperti metode bisect, bisect_right, dan bisect_left.

Kesimpulan

Karena modul bagi dua menyediakan metode untuk memodifikasi daftar dengan menyisipkan elemen di dalamnya sambil menjaga urutan pengurutan, banyak kode berulang dihapus di mana Anda mungkin harus terus-menerus mengurutkan daftar setelah melakukan modifikasi padanya. Menurut dokumen resmi Python, metode membagi dua memberikan peningkatan dibandingkan pendekatan lain yang umum digunakan, terutama ketika daftar memiliki banyak elemen.

Related Posts