Pertaruhan anda mungkin mengalami kekecewaan kehilangan data yang cuba mengezip dua senarai dengan panjang yang berbeza dalam Python.
itertools.zip_longest hadir untuk menyelamatkan hari ini. Di sini saya ingin meneroka cara menggunakan zip_longest(), bandingkan dengan standard zip dan mendalami senario praktikal di mana ia bersinar.
Fungsi zip_longest() daripada modul itertools dalam Python membolehkan anda mengezip berbilang iterable, mengisi yang lebih pendek dengan nilai yang ditentukan (lalai). Ini memastikan tiada data hilang, walaupun iterabel mempunyai panjang yang berbeza.
Pertimbangkan senario di mana anda cuba meletakkan pelajar di dalam bilik darjah, tetapi bilangan pelajar dan bilangan meja yang tersedia tidak sepadan. Anda mahu memastikan setiap pelajar mempunyai tempat duduk dan setiap tempat duduk diisi sebanyak mungkin.
Jika anda menggunakan zip(), sebaik sahaja anda kehabisan pelajar atau meja, gandingan akan berhenti. Ini bermakna beberapa meja mungkin kekal kosong atau sesetengah pelajar dibiarkan berdiri.
Dengan zip_longest(), anda boleh menggandingkan setiap pelajar dengan meja dan jika anda kehabisan meja, anda boleh ambil perhatian bahawa pelajar tambahan perlu berdiri. Sebagai alternatif, jika terdapat lebih banyak meja daripada pelajar, anda boleh menandai meja tambahan sebagai "kosong". Setiap pelajar diambil kira, dan anda tahu dengan tepat meja mana yang dibiarkan kosong.
Pertimbangkan contoh di mana bilangan meja melebihi bilangan pelajar, menggunakan kedua-dua zip() dan zip_longest().
students = ['Alice', 'Bob'] desks = ['Desk 1', 'Desk 2', 'Desk 3'] # Using zip to pair students with desks seating_zip = list(zip(students, desks)) print("Seating with zip:") for student, desk in seating_zip: print(f"{student} is assigned to {desk}")
Output:
Seating with zip: Alice is assigned to Desk 1 Bob is assigned to Desk 2
Dengan zip(), gandingan berhenti sebaik sahaja senarai yang lebih pendek (pelajar) habis. Meja 3 masih belum ditetapkan dan tiada tanda bahawa ia tidak digunakan.
from itertools import zip_longest students = ['Alice', 'Bob'] desks = ['Desk 1', 'Desk 2', 'Desk 3'] # Using zip_longest to pair students with desks seating_zip_longest = list(zip_longest(students, desks, fillvalue='Empty Seat')) print("\nSeating with zip_longest:") for student, desk in seating_zip_longest: print(f"{student} is assigned to {desk}")
Output:
Seating with zip_longest: Alice is assigned to Desk 1 Bob is assigned to Desk 2 Empty Seat is assigned to Desk 3
Dengan zip_longest(), setiap meja dikira, walaupun pelajar tidak mencukupi untuk memenuhi semua tempat duduk. Dalam kes ini, Meja 3 dipasangkan dengan "Kerusi Kosong" yang menunjukkan bahawa meja ini masih kosong. Pendekatan ini amat berguna apabila anda perlu menjejaki semua sumber, memastikan tiada yang tertinggal.
? Kelebihan zip_longest():
Memelihara Data: Memastikan tiada data hilang dengan mengisi iterable yang lebih pendek.
Fleksibiliti: Membenarkan menentukan nilai isian tersuai.
Gandingan Komprehensif: Berguna dalam tugas pemprosesan data yang memerlukan penjajaran iterabel yang berbeza panjang.
? Kelemahan zip_longest():
Padding Mungkin Tidak Diingini: Dalam sesetengah kes, padding mungkin menimbulkan kerumitan yang tidak perlu.
Penggunaan Memori: Mungkin menggunakan lebih banyak memori jika berurusan dengan iterable besar dan nilai isian besar.
? Kelebihan zip():
Mudah dan Cekap: Berfungsi dengan baik dengan iterable yang sama panjang.
Kurang Penggunaan Memori: Tiada padding bermakna kemungkinan kurang memori overhed.
? Kelemahan zip():
Kehilangan Data: Dipenggal kepada yang paling pendek boleh diulang, kehilangan data daripada yang lebih panjang.
zip_longest() ialah alat yang berkuasa dalam senjata Python, terutamanya apabila bekerja dengan iterable dengan panjang yang berbeza. Ia memastikan integriti data dengan mengisi nilai yang hilang, menjadikannya sesuai untuk pelbagai tugas pemprosesan data. Walaupun zip() lebih ringkas dan lebih cekap ingatan, zip_longest() menyediakan fleksibiliti yang diperlukan dalam banyak senario praktikal.
Atas ialah kandungan terperinci Selain Mengezip Kot: Menguasai zip_longest dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!