Cara Menggunakan Fungsi Zip di Python

How Use Zip Function Python



Artikel ini akan membahas panduan tentang fungsi zip yang tersedia di pustaka modul standar Python. Metode ini memungkinkan Anda untuk menggabungkan dan memasangkan elemen dari beberapa objek yang dapat diubah. Anda kemudian dapat menjalankan logika lebih lanjut pada pasangan ini. Dalam banyak kasus, menggunakan fungsi zip jauh lebih efisien dan bersih daripada menggunakan banyak loop for bersarang.

Tentang Fungsi Zip

Seperti yang dinyatakan sebelumnya, fungsi zip digunakan untuk membuat pasangan dari elemen beberapa objek yang dapat diubah. Pertimbangkan contoh di bawah ini untuk memahami sintaks dasar dan penggunaan fungsi zip:







daftar1= ['ke', 'B', 'C']
daftar2= ['apel', 'bola', 'kucing']
ritsleting= ritsleting(daftar1,daftar2)
mencetak (Daftar(ritsleting))

Dua pernyataan pertama dalam contoh kode di atas mendefinisikan dua daftar yang berisi beberapa elemen. Selanjutnya, fungsi zip digunakan dengan melewatkan variabel list1 dan list2 sebagai argumen. Ini adalah sintaks utama dari fungsi zip. Anda hanya perlu memberikan daftar atau iterables yang valid lainnya sebagai argumen yang elemennya ingin Anda gabungkan. Terakhir, pernyataan print digunakan untuk mendapatkan output dari variabel zip. Setelah menjalankan contoh kode yang disebutkan di atas, Anda akan mendapatkan output berikut:



[('a', 'apel'), ('b', 'bola'), ('c', 'kucing')]

Perhatikan bahwa fungsi zip mengembalikan objek tipe zip dan bukan daftar. Anda harus mengonversinya menjadi tipe yang dapat diubah, seperti yang ditunjukkan pada pernyataan cetak di atas.



Secara sederhana, fungsi zip mengambil elemen indeks yang sama dari dua daftar dan menggabungkannya sebagai pasangan dalam sebuah tuple. Jadi elemen ke-0 dari list1 digabungkan dengan elemen ke-0 dari list2, elemen ke-1 dari list1 digabungkan dengan elemen ke-1 dari list2 dan seterusnya. Fungsi zip bergerak dari kiri ke kanan dan tuple yang berisi elemen berpasangan memiliki indeks yang sama dengan elemen yang disimpan di dalamnya.





Menggunakan Zip Ketika Iterables Tidak Memiliki Jumlah Elemen yang Sama

Dalam contoh yang disebutkan di atas, kedua daftar memiliki jumlah elemen yang sama. Jika Anda berurusan dengan beberapa kode di mana kedua daftar tidak memiliki jumlah elemen yang sama, fungsi zip akan berhenti pada elemen terakhir dari daftar yang memiliki jumlah elemen terendah.

Pada contoh di bawah, fungsi zip akan berhenti di elemen c, terlepas dari list2 memiliki satu elemen lagi.



daftar1= ['ke', 'B', 'C']
daftar2= ['apel', 'bola', 'kucing', 'boneka']
ritsleting= ritsleting(daftar1,daftar2)
mencetak (Daftar(ritsleting))

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

[('a', 'apel'), ('b', 'bola'), ('c', 'kucing')]

Anda dapat Menggunakan Lebih dari Dua Iterables Saat Menggunakan Fungsi Zip

Biasanya, fungsi zip digunakan untuk membandingkan dua objek yang dapat diubah. Namun, Anda dapat meneruskan sejumlah iterable sebagai argumen ke fungsi zip. Prinsip berhenti pada elemen terakhir dari daftar terpendek akan tetap berlaku.

daftar1= ['ke', 'B', 'C']
daftar2= ['apel', 'bola', 'kucing', 'boneka']
daftar3= ['5', '3']
ritsleting= ritsleting(daftar1,daftar2,daftar3)
mencetak (Daftar(ritsleting))

Setelah menjalankan contoh kode yang disebutkan di atas, Anda akan mendapatkan hasil sebagai berikut:

[('a', 'apel', '5'), ('b', 'bola', '3')]

Membuat Daftar Individu dari Objek Tipe Zip

Jika Anda sudah memiliki objek zip, Anda dapat menggunakannya untuk mengisi kembali daftar individual yang sebelumnya digunakan saat fungsi zip pertama kali dipanggil.

daftar1= ['ke', 'B', 'C']
daftar2= ['apel', 'bola', 'kucing', 'boneka']
daftar3= ['5', '3']
ritsleting= ritsleting(daftar1,daftar2,daftar3)
l1,l2,l3= ritsleting(*zip)
mencetak (Daftar(l1), Daftar(l2), Daftar(l3))

Setelah menjalankan contoh kode yang disebutkan di atas, Anda akan mendapatkan hasil sebagai berikut:

['a', 'b'] ['apel', 'bola'] ['5', '3']

Dalam contoh kode di atas, objek zip dikempiskan menggunakan operator *. Hasil kempes kemudian dimasukkan ke panggilan lain ke fungsi zip yang membuat daftar asli. Perhatikan bahwa Anda mungkin tidak mendapatkan semua elemen kembali ke daftar asli jika daftar dengan panjang yang tidak sama digunakan saat objek zip dibuat pertama kali.

Menggunakan Zip Saat Anda Ingin Menjaga Elemen dari Iterable Terpanjang

Dalam beberapa contoh di atas, Anda mungkin telah mengamati bahwa fungsi zip secara default berhenti pada elemen terakhir dari iterable terpendek. Bagaimana jika Anda ingin melanjutkan iterasi hingga mencapai elemen terakhir dari iterable terpanjang?

Dalam kasus seperti itu, Anda harus menggunakan metode zip_longest() dari modul itertools Python. Ini bekerja sama dengan fungsi zip, dengan satu perbedaan kecil yang berhenti pada elemen terakhir dari tipe iterable terpanjang.

dari itertools imporzip_longest
daftar1= ['ke', 'B', 'C']
daftar2= ['apel', 'bola', 'kucing', 'boneka']
daftar3= ['5', '3']
ritsleting=zip_longest(daftar1,daftar2,daftar3)
mencetak (Daftar(ritsleting))

Setelah menjalankan contoh kode yang disebutkan di atas, Anda akan mendapatkan hasil sebagai berikut:

[('a', 'apel', '5'), ('b', 'bola', '3'), ('c', 'kucing', Tidak Ada), (Tidak Ada, 'boneka', Tidak Ada) ]

Nilai yang hilang diisi sebagai objek tipe None. Anda juga dapat memberikan nilai Anda sendiri untuk diisi dengan meneruskan argumen fillvalue tambahan ke metode zip_longest.

dari itertools imporzip_longest
daftar1= ['ke', 'B', 'C']
daftar2= ['apel', 'bola', 'kucing', 'boneka']
daftar3= ['5', '3']
ritsleting=zip_longest(daftar1,daftar2,daftar3,nilai isi='nilai_saya')
mencetak (Daftar(ritsleting))

Setelah menjalankan contoh kode yang disebutkan di atas, Anda akan mendapatkan hasil sebagai berikut:

[('a', 'apel', '5'), ('b', 'bola', '3'), ('c', 'kucing', 'nilai_saya'), ('nilai_saya', 'boneka ', 'nilai_saya')]

Kesimpulan

Fungsi Zip dapat diemulasi menggunakan beberapa loop dan pernyataan kondisi. Namun, ini membantu menjaga kode tetap teratur dan bersih dengan menghapus pernyataan bertele-tele dan berulang yang tidak perlu.