Cara mengompres dua daftar dengan python
Seringkali Anda mungkin tertarik untuk mengompresi (atau “menggabungkan”) dua daftar dengan Python. Untungnya, hal ini mudah dilakukan dengan menggunakan fungsi zip().
Tutorial ini menunjukkan beberapa contoh penggunaan praktis fungsi ini.
Contoh 1: Kompres dua daftar dengan panjang yang sama menjadi satu daftar
Sintaks berikut menunjukkan cara mengompresi dua daftar dengan panjang yang sama menjadi satu:
#define list a and list b a = ['a', 'b', 'c'] b = [1, 2, 3] #zip the two lists together into one list list( zip (a,b)) [('a', 1), ('b', 2), ('c', 3)]
Contoh 2: Kompres dua daftar dengan panjang yang sama ke dalam kamus
Sintaks berikut menunjukkan cara mengompresi dua daftar dengan panjang yang sama ke dalam kamus:
#define list of keys and list of values keys = ['a', 'b', 'c'] values = [1, 2, 3] #zip the two lists together into one dictionary dict( zip (keys, values)) {'a': 1, 'b': 2, 'c': 3}
Contoh 3: Kompres dua daftar yang panjangnya tidak sama
Jika kedua daftar Anda memiliki panjang yang tidak sama, zip() akan dipotong sesuai panjang daftar yang lebih pendek:
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together into one list list( zip (a,b)) [('a', 1), ('b', 2), ('c', 3)]
Jika Anda ingin mencegah zip() terpotong hingga ke daftar terpendek, Anda dapat menggunakan fungsi zip_longest() dari pustaka itertools .
Secara default, fungsi ini mengisi “Tidak Ada” untuk nilai yang hilang:
from itertools import zip_longest #define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together without truncating to length of shortest list list( zip_longest (a, b)) [('a', 1), ('b', 2), ('c', 3), ('d', None)]
Namun, Anda dapat menggunakan argumen fillvalue untuk menentukan nilai pengisian yang berbeda untuk digunakan:
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together, using fill value of '0' list( zip_longest (a, b, fillvalue= 0 )) [('a', 1), ('b', 2), ('c', 3), ('d', 0)]
Anda dapat menemukan dokumentasi lengkap untuk fungsi zip_longest() di sini .