Cara Menggunakan Fungsi zip() dengan Python (Gabungkan Iterables)
Pelajari cara menggunakan fungsi zip() Python untuk menggabungkan beberapa iterable secara paralel. Kuasai pembuatan kamus, buka zip logika, dan tangani ketidakcocokan panjang.
Ikhtisar
Saat melakukan iterasi pada kumpulan data, Anda sering kali perlu memproses beberapa daftar terkait secara paralel. Misalnya memasangkan daftar nama pengguna dengan daftar ID pengguna, atau mencocokkan koordinat nilai X dan Y. Alih-alih loop bersarang atau mengakses item menggunakan penghitung pengindeksan daftar, Python menyediakan fungsi `zip()` yang elegan.
Fungsi `zip(*iterables)` mengambil beberapa iterable sebagai argumen dan menggabungkannya, mengembalikan sebuah iterator tupel di mana tupel ke-i berisi elemen ke-i dari setiap iterable input. Hal ini memungkinkan Anda dengan mudah melakukan perulangan pada dua atau lebih koleksi secara bersamaan dengan satu perulangan `for`.
Secara default, `zip()` berhenti digabungkan ketika input terpendek yang dapat diubah telah habis. Elemen yang tersisa dalam iterable yang lebih panjang akan dibuang. Jika Anda ingin memasangkan elemen hingga iterable terpanjang habis, mengisi nilai yang hilang dengan placeholder, Python menyediakan `zip_longest()` di modul `itertools` perpustakaan standar.
Kode & Output Eksekusi
Skrip ini mendemonstrasikan iterasi daftar paralel, membuat kamus menggunakan zip, dan menangani ketidakcocokan menggunakan zip_longest.
from itertools import zip_longest
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 95]
# 1. Basic Zipping in a loop
print("--- Parallel Iteration ---")
for name, score in zip(names, scores):
print(f"{name} scored {score}")
# 2. Creating a dictionary from two lists
user_dict = dict(zip(names, scores))
print("\nCreated Dictionary:", user_dict)
# 3. Handling unequal list lengths with zip_longest
extra_names = ["Alice", "Bob", "Charlie", "David"]
short_scores = [85, 90]
# Standard zip truncates
print("\nStandard zip output:", list(zip(extra_names, short_scores)))
# zip_longest fills missing values
zipped_long = list(zip_longest(extra_names, short_scores, fillvalue="N/A"))
print("zip_longest output:", zipped_long)--- Parallel Iteration ---
Alice scored 85
Bob scored 90
Charlie scored 95
Created Dictionary: {'Alice': 85, 'Bob': 90, 'Charlie': 95}
Standard zip output: [('Alice', 85), ('Bob', 90)]
zip_longest output: [('Alice', 85), ('Bob', 90), ('Charlie', 'N/A'), ('David', 'N/A')]Implementasi Langkah demi Langkah
- Teruskan beberapa daftar atau iterable yang ingin Anda gabungkan ke fungsi zip().
- Buka paket tupel yang dihasilkan dalam pernyataan loop for untuk iterasi paralel yang bersih.
- Konversikan objek zip ke kamus menggunakan dict(zip(keys_list, value_list)) untuk pemetaan.
- Impor itertools.zip_longest untuk menggabungkan daftar panjang yang tidak sama tanpa kehilangan nilai ekor.
Pertanyaan yang Sering Diajukan
Bagaimana cara "membuka zip" urutan tupel yang di-zip?
Anda dapat mengekstrak urutan kembali ke dalam daftar terpisah menggunakan operator pembongkaran *: list(zip(*zipped_tuples)).
Apakah zip() menduplikasi elemen dalam memori?
Tidak, zip() mengembalikan iterator yang menghasilkan elemen sesuai permintaan, sehingga sangat hemat memori.
Topik Terkait
Pelajari cara mengulang atau mengulangi kamus Python. Temukan metode untuk mengulang kunci, nilai, dan pasangan nilai kunci dengan contoh yang bersih dan dapat dijalankan.
Cara Menggabungkan Dua Daftar dengan PythonPelajari cara terbaik untuk menggabungkan dan menggabungkan dua daftar dengan Python. Bandingkan operator plus, metode perluasan, pembongkaran daftar, dan opsi rantai.
Sumber Daya Python yang Direkomendasikan
Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.
Fungsi Python
Fungsi master Python. Pelajari cara menulis kode yang dapat digunakan kembali menggunakan def, menentukan argumen, mengembalikan nilai, dan memahami cakupan lokal dan global.
Lembar
Panduan referensi cepat untuk perpustakaan standar matematika Python. Pelajari cara menggunakan fungsi trigonometri, logaritma, pembulatan, dan aritmatika.
Python vs JavaScript: Bahasa Pemrograman Mana yang Terbaik?
Perbandingan komprehensif antara Python dan JavaScript. Jelajahi perbedaan sintaksis, kinerja, kasus penggunaan (backend vs frontend), dan contoh pengkodean.