Ne zaman izip yerine zip kullanmak daha mı iyi?
itertools.izip
yerine zip
kullanmak daha mı iyi?
CEVAP
zip
istenen tek seferde tüm listeyi, izip
öğeleri hesaplar hesaplar.
Önemli bir fark olduğunu 'zip' verir gerçek bir liste, 'izip' döndürür 'izip nesne' olmayan bir liste ve desteklemiyor listesi-belirli özellikler (dizin):
>>> l1 = [1, 2, 3, 4, 5, 6]
>>> l2 = [2, 3, 4, 5, 6, 7]
>>> z = zip(l1, l2)
>>> iz = izip(l1, l2)
>>> isinstance(zip(l1, l2), list)
True
>>> isinstance(izip(l1, l2), list)
False
>>> z[::2] #Get odd places
[(1, 2), (3, 4), (5, 6)]
>>> iz[::2] #Same with izip
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'itertools.izip' object is unsubscriptable
Eğer bir liste (gibi liste nesne değil, bir ihtiyacın olursa, sadece kullanın ''. zip yani
Bunun dışında, '' hafıza veya devir tasarruf için yararlı olabilir. izip
E. g. aşağıdaki kodu kaç döngüden sonra çıkabilir, birlikte listesindeki tüm öğeleri hesaplamak için gerek yoktur:
lst_a = ... #list with very large number of items
lst_b = ... #list with very large number of items
#At each cycle, the next couple is provided
for a, b in izip(lst_a, lst_b):
if a == b:
break
print a
zip
kullanılarak hesaplanan olurdutümDöngüsü girmeden önce (a, b)
çiftler.
lst_a
lst_b
çok büyükse ayrıca, (örneğin, kayıtları milyonlarca), zip(a, b)
çift boşluk ile üçüncü bir liste inşa edecek.
Ama eğer küçük bir liste varsa, belki zip
daha hızlı.
Ne zaman pozitif bir tablo kullanmak y...
Soyut bir sınıf yerine bir arabirimi k...
AngularJS : servisi kullanmak için ne ...
Ne zaman TCP yerine UDP kullanmak için...
Ne zaman bir NSArray bir NSSet kullanm...