Python yineleyici davranış ve sonraki(yineleyici)listesi
Düşünün:
>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
Yani, yineleyici ilerleyen beklendiği gibi, aynı nesne mutasyona tarafından ele.
Bu durumda, beklerim:
a = iter(list(range(10)))
for i in a:
print(i)
next(a)
atlamak her ikinci unsur: çağrı next
gerektiğini ileri yineleyici sonra, örtülü çağrı yapılmış döngü gerektiğini ileri ikinci kez - ve sonuç bu ikinci çağrı olurdu atanan i
.
Değil. Döngü yazdırırtümherhangi bir atlama olmadan listedeki öğeleri.
İlk aklıma gelen bu olabileceğini çünkü döngü aramalar iter
ne geçti, ve bu olabilir, bir bağımsız yineleyici - bu değil de var iter(a) is a
.
Neden next
Bu durumda yineleyici önceden görünmüyor?
CEVAP
Seni görmek ne olduğunutercümannext()
dönüş değeri yankılanan geri:
>>> a = iter(list(range(10)))
>>> for i in a:
... print(i)
... next(a)
...
0
1
2
3
4
5
6
7
8
9
Eğer next()
çıkış atarsanız şey beklendiği gibi çalışır
>>> a = iter(list(range(10)))
>>> for i in a:
... print(i)
... _ = next(a)
...
0
2
4
6
8
ya da baskı ekstra bilgi:
>>> a = iter(list(range(10)))
>>> for i in a:
... print('Printing: {}'.format(i))
... next(a)
...
Printing: 0
1
Printing: 2
3
Printing: 4
5
Printing: 6
7
Printing: 8
9
Diğer bir deyişle, next()
yineleyici sonraki değerini verir, çünkü beklenen, ama çalışıyor, döngü kendi yineleyici kendi kopyasını vardır inanmak bir şekilde açtı.
Bir yineleyici değişken olmadan dizi d...
Python tam olarak ne'In yineleyic...
Neden döngü için bir Python yineleyici...
Python, nasıl bir yineleyici üzerinde ...
Rolling veya Python pencere yineleyici...