Sumber: My Blog Post (pemformatan yang lebih baik)
Contoh
numbers = [1,2,3]
letters = 'abcd'
zip(numbers, letters)
# [(1, 'a'), (2, 'b'), (3, 'c')]
Memasukkan
Nol atau lebih iterables [1] (mis. Daftar, string, tuple, kamus)
Output (daftar)
1 tuple = (elemen_1 angka, elemen_1 huruf)
Tuple 2 = (angka e_2, e_2 huruf)
...
n-th tuple = (angka e_n, huruf e_n)
- Daftar n tupel: n adalah panjang argumen terpendek (input)
- len (angka) == 3 <len (huruf) == 4 → pendek = 3 → kembalikan 3 tupel
- Panjang setiap tuple = # dari args (tuple mengambil elemen dari setiap arg)
- args = (angka, huruf); len (args) == 2 → tuple dengan 2 elemen
ituple = (element_i arg1, element_i arg2 ..., element_i arg n)
Kasus Tepi
1) String Kosong: len (str) = 0 = tidak ada tupel
2) Single String: len (str) == 2 tuple dengan len (args) == 1 elemen
zip()
# []
zip('')
# []
zip('hi')
# [('h',), ('i',)]
Zip in Action!
1. Buat kamus [2] dari dua daftar
keys = ["drink","band","food"]
values = ["La Croix", "Daft Punk", "Sushi"]
my_favorite = dict( zip(keys, values) )
my_favorite["drink"]
# 'La Croix'
my_faves = dict()
for i in range(len(keys)):
my_faves[keys[i]] = values[i]
zip adalah solusi yang elegan, jelas, & ringkas
2. Cetak kolom dalam tabel
"*" [3] disebut "membongkar": f(*[arg1,arg2,arg3]) == f(arg1, arg2, arg3)
student_grades = [
[ 'Morty' , 1 , "B" ],
[ 'Rick' , 4 , "A" ],
[ 'Jerry' , 3 , "M" ],
[ 'Kramer' , 0 , "F" ],
]
row_1 = student_grades[0]
print row_1
# ['Morty', 1, 'B']
columns = zip(*student_grades)
names = columns[0]
print names
# ('Morty', 'Rick', 'Jerry', 'Kramer')
Kredit Ekstra: Membuka Ritsleting
zip(*args) disebut "unzipping" karena memiliki efek kebalikan dari zip
numbers = (1,2,3)
letters = ('a','b','c')
zipped = zip(numbers, letters)
print zipped
# [(1, 'a'), (2, 'b'), (3, 'c')]
unzipped = zip(*zipped)
print unzipped
# [(1, 2, 3), ('a', 'b', 'c')]
unzipped: tuple_1 = e1 dari setiap tuple yang di-zip. tuple_2 = e2 masing-masingzipped
Catatan kaki
- Objek yang mampu mengembalikan anggotanya satu per satu (mis. Daftar [1,2,3], string 'I like codin', tuple (1,2,3), kamus {'a': 1, 'b' : 2})
- {key1: value1, key2: value2 ...}
- “Bongkar” (*)
* Kode:
# foo - function, returns sum of two arguments
def foo(x,y):
return x + y
print foo(3,4)
# 7
numbers = [1,2]
print foo(numbers)
# TypeError: foo() takes exactly 2 arguments (1 given)
print foo(*numbers)
# 3
*mengambil numbers(1 arg) dan "membongkar" nya 'elemen 2 menjadi 2 args
zipuntuk dilakukan? Mengapa Anda harus memiliki tiga daftar - seperti apa bentuknya?