Python kang dibangun ing zip fungsi () nggabungke unsur sawetara obyek iterable (dhaftar, tuples, etc.) lan digunakake kanggo njupuk unsur sawetara dhaptar ing daur ulang kanggo.
Bagean iki nerangake panggunaan fungsi zip () ing ngisor iki.
- Entuk unsur pirang-pirang dhaptar ing daur ulang.
- Dealing karo macem-macem nomer unsur
zip()
:Fungsi kasebut bakal nglirwakake unsur sing akeh banget.itertools.zip_longest()
:Fungsi iki bakal ngisi unsur sing ilang.
- Entuk dhaptar tuple unsur saka macem-macem iterables.
Entuk unsur pirang-pirang dhaptar ing daur ulang.
Yen sampeyan pengin njupuk lan nggunakake unsur sawetara obyek iterable (dhaptar, tuples, etc.) ing wektu sing padha ing daur ulang kanggo, nemtokaken minangka bantahan kanggo fungsi zip ().
names = ['Alice', 'Bob', 'Charlie'] ages = [24, 50, 18] for name, age in zip(names, ages): print(name, age) # Alice 24 # Bob 50 # Charlie 18
Ora mung loro, nanging uga telu utawa luwih.
points = [100, 85, 90] for name, age, point in zip(names, ages, points): print(name, age, point) # Alice 24 100 # Bob 50 85 # Charlie 18 90
Dealing karo macem-macem nomer unsur
Fungsi zip () nglirwakake akeh unsur.
Ing zip () fungsi, yen nomer unsur ing saben dhaftar beda, nganti kurang (cendhek) nomer unsur bakal bali, lan nomer luwih bakal digatèkaké.
names = ['Alice', 'Bob', 'Charlie', 'Dave'] ages = [24, 50, 18] for name, age in zip(names, ages): print(name, age) # Alice 24 # Bob 50 # Charlie 18
Fungsi itertools.zip_longest () bakal ngisi unsur sing ilang.
Nggunakake zip_longest () ing modul perpustakaan standar itertools, iku bisa kanggo isi unsur ilang karo nilai kasepakatan nalika nomer unsur ing saben dhaftar beda.
Kanthi gawan, diisi Ora Ana.
from itertools import zip_longest names = ['Alice', 'Bob', 'Charlie', 'Dave'] ages = [24, 50, 18] for name, age in zip_longest(names, ages): print(name, age) # Alice 24 # Bob 50 # Charlie 18 # Dave None
Yen argumen fillvalue ditemtokake, bakal diisi karo nilai kasebut.
for name, age in zip_longest(names, ages, fillvalue=20): print(name, age) # Alice 24 # Bob 50 # Charlie 18 # Dave 20
Sanajan ana sawetara dhaptar kanthi unsur sing ilang, nilai sing kudu diisi seragam. Ora bisa nemtokake nilai sing beda.
points = [100, 85] for name, age, point in zip_longest(names, ages, points, fillvalue=20): print(name, age, point) # Alice 24 100 # Bob 50 85 # Charlie 18 20 # Dave 20 20
Sampeyan bisa nemtokake nilai beda nggunakake zip_longest () nang zip_longest (), nanging ora praktis amarga sampeyan kudu ngerti ing advance kang unsur dhaftar ilang.
Yen sampeyan pengin ngisi pirang-pirang dhaptar kanthi jumlah unsur sing ora dingerteni, saben duwe nilai sing beda, prosedur ing ngisor iki bisa dianggep.
- Netepake nilai kanggo ngisi kabeh dhaptar.
- Entuk jumlah maksimum unsur
- Isi kabeh dhaptar nganti jumlah maksimum unsur
- Nggunakake fungsi zip().
fill_name = 'XXX' fill_age = 20 fill_point = 50 len_names = len(names) len_ages = len(ages) len_points = len(points) max_len = max(len_names, len_ages, len_points) names = names + [fill_name] * (max_len - len_names) ages = ages + [fill_age] * (max_len - len_ages) points = points + [fill_point] * (max_len - len_points) print(names) print(ages) print(points) # ['Alice', 'Bob', 'Charlie', 'Dave'] # [24, 50, 18, 20] # [100, 85, 50, 50] for name, age, point in zip(names, ages, points): print(name, age, point) # Alice 24 100 # Bob 50 85 # Charlie 18 50 # Dave 20 50
Ing proses ngisi nganti paling akeh unsur, kita nindakake ing ngisor iki.
- Miwiti dhaptar kanthi nilai sewenang-wenang lan jumlah unsur
- + operator kanggo nggabungake dhaptar bebarengan
Yen kita nguripake iki menyang fungsi, iku katon kaya iki. Dhaptar asli lan nilai sing ngisi dhaptar kasebut minangka argumen iterables (dhaftar utawa tuple).
def my_zip_longest(iterables, fillvalues): max_len = max(len(i) for i in iterables) return zip(*[list(i) + [v] * (max_len - len(i)) for i, v in zip(iterables, fillvalues)]) for name, age, point in my_zip_longest((names, ages, points), ('XXX', 20, 50)): print(name, age, point) # Alice 24 100 # Bob 50 85 # Charlie 18 50 # Dave 20 50
Iki nggunakake notasi pangerten dhaptar lan ekspansi dhaptar kanthi *.
- Artikel sing gegandhengan:Nggunakake notasi pangerten dhaptar Python
Entuk dhaptar tuple unsur saka macem-macem iterables.
Fungsi zip () ngasilake iterator (objek zip) sing minangka tuple unsur saka pirang-pirang obyek sing bisa diulang.
Uga bisa digunakake ing njaba kanggo daur ulang, lan target ora winates kanggo dhaptar.
names = ['Alice', 'Bob', 'Charlie'] ages = (24, 50, 18) z = zip(names, ages) print(z) print(type(z)) # <zip object at 0x10b57b888> # <class 'zip'>
Yen sampeyan pengin njaluk dhaptar unsur sawetara obyek iterable minangka tuple, nggunakake dhaftar () kanggo nggawe dhaftar.
l = list(zip(names, ages)) print(l) print(type(l)) print(type(l[0])) # [('Alice', 24), ('Bob', 50), ('Charlie', 18)] # <class 'list'> # <class 'tuple'>