dict.items()Ve arasında uygulanabilir farklar var dict.iteritems()mı?
Gönderen Python docs :
dict.items(): Sözlüğün (anahtar, değer) çiftleri listesinin bir kopyasını döndürür .
dict.iteritems(): Sözlüğün (anahtar, değer) çiftleri üzerinden bir yineleyici döndür .
Aşağıdaki kodu çalıştırırsanız, her biri aynı nesneye bir başvuru döndürüyor gibi görünüyor. Kaçırdığım ince farklar var mı?
#!/usr/bin/python
d={1:'one',2:'two',3:'three'}
print 'd.items():'
for k,v in d.items():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
print 'd.iteritems():'
for k,v in d.iteritems():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
Çıktı:
d.items():
they are the same object
they are the same object
they are the same object
d.iteritems():
they are the same object
they are the same object
they are the same object
d[k] is vher zaman True döndürür çünkü python, -5 ile 256 arasındaki tüm tamsayılar için bir tamsayı nesnesi dizisi tutar: docs.python.org/2/c-api/int.html Bu aralıkta bir int oluşturduğunuzda, aslında sadece mevcut nesneye bir referans geri alın: >> a = 2; b = 2 >> a is b TrueAma,>> a = 1234567890; b = 1234567890 >> a is b False
iteritems()değişikliği iter()Python 3'te? Yukarıdaki dokümantasyon bağlantısı bu yanıtla eşleşmiyor gibi görünüyor.
items()öğeleri bir kerede oluşturur ve bir liste döndürür.iteritems()bir jeneratör döndürür - jeneratör hernext()çağrıldığında bir defada bir öğe "oluşturan" bir nesnedir .