SORU
14 ŞUBAT 2011, PAZARTESİ


Ne zaman izip yerine zip kullanmak daha mı iyi?

itertools.izip yerine zip kullanmak daha mı iyi?

CEVAP
14 ŞUBAT 2011, PAZARTESİ


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ı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • huyked

    huyked

    28 Mart 2008
  • pain975

    pain975

    27 NİSAN 2008