कैसे?
while BoolIter(N, default=True, falseIndex=N-1):
print 'some thing'
या एक अधिक बदसूरत तरह से:
for _ in BoolIter(N):
print 'doing somthing'
या आप के माध्यम से पिछली बार पकड़ने के लिए चाहते हैं:
for lastIteration in BoolIter(N, default=False, trueIndex=N-1):
if not lastIteration:
print 'still going'
else:
print 'last time'
जहां:
क्रम में
class BoolIter(object):
def __init__(self, n, default=False, falseIndex=None, trueIndex=None, falseIndexes=[], trueIndexes=[], emitObject=False):
self.n = n
self.i = None
self._default = default
self._falseIndexes=set(falseIndexes)
self._trueIndexes=set(trueIndexes)
if falseIndex is not None:
self._falseIndexes.add(falseIndex)
if trueIndex is not None:
self._trueIndexes.add(trueIndex)
self._emitObject = emitObject
def __iter__(self):
return self
def next(self):
if self.i is None:
self.i = 0
else:
self.i += 1
if self.i == self.n:
raise StopIteration
if self._emitObject:
return self
else:
return self.__nonzero__()
def __nonzero__(self):
i = self.i
if i in self._trueIndexes:
return True
if i in self._falseIndexes:
return False
return self._default
def __bool__(self):
return self.__nonzero__()
Upvoting नीचे वोटों की भरपाई करने के लिए: यदि लियोनेल इस सवाल से पूछता है, तो दूसरे लोग झुकते हैं टी एक ही सवाल नहीं है, और नीचे दिए गए जवाब उपयोगी होंगे। – EOL
शब्द "पायथनिक" का उपयोग किया जा रहा है। यह "पठनीय" और "आसानी से समझने योग्य" के लिए एक समानार्थी है। पाइथन में, कम से कम। – darioo
संभावित डुप्लिकेट [क्या यह एक पुनरावृत्ति चर के बिना रेंज लूप के लिए पाइथन लागू करना संभव है?] (Http://stackoverflow.com/questions/818828/is-it-possible-to-implement-a-python-for- रेंज-लूप-बिना-ए-इटेरेटर-वेरिएबल) –