Kaynak: Blog Yazılarım (daha iyi biçimlendirme)
Misal
numbers = [1,2,3]
letters = 'abcd'
zip(numbers, letters)
# [(1, 'a'), (2, 'b'), (3, 'c')]
Giriş
Sıfır veya daha fazla yinelenebilir [1] (ör. Liste, dize, grup, sözlük)
Çıktı (liste)
1. grup = (sayıların element_1, harflerin element_1)
2. grup = (e_2 sayı, e_2 harf)
...
n. üçlü = (e_n sayıları, e_n harfleri)
- N tuples listesi: n en kısa argümanın uzunluğudur (girdi)
- len (sayılar) == 3 <len (harfler) == 4 → kısa = 3 → 3 tuple döndür
- Her tuple uzunluğu = bağımsız değişken sayısı (tuple her argümandan bir eleman alır)
- args = (sayılar, harfler); len (args) == 2 → 2 elemanlı demet
ith tuple = (element_i arg1, element_i arg2…, element_i arg n)
Kenar Kılıfları
1) Boş Dize: len (str) = 0 = tuples yok
2) Tek Dize: len (str) == len (args) == 1 öğe içeren 2 tuple
zip()
# []
zip('')
# []
zip('hi')
# [('h',), ('i',)]
Eylem Zip!
1. İki listeden bir sözlük [2] oluşturun
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 zarif, açık ve özlü bir çözümdür
2. Tablodaki sütunları yazdırma
"*" [3] "ambalajdan çıkarma" olarak adlandırılır: 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')
Ekstra Kredi: Unzipping
zip(*args) "unzipping" olarak adlandırılır, çünkü bunun ters etkisi vardır. 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 = sıkıştırılmış her bir tuplein e1'i. tuple_2 = her birinin e2zipped
Dipnotlar
- Üyelerini teker teker döndürebilen bir nesne (ör. Liste [1,2,3], 'I codin'i seviyorum', tuple (1,2,3), sözlük {'a': 1, 'b' : 2})
- {anahtar1: değer1, anahtar2: değer2 ...}
- “Paketten Çıkarma” (*)
* Kod:
# 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
*numbers2 elementini 2 argümana "(1 arg) aldı ve" paketini açtı "
zip? Neden üç listeniz olsun - neye benziyorlar?