어때요?
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
"Pythonic"용어는 남용되고 있습니다. 그것은 "읽을 수있는"그리고 "쉽게 이해할 수있는"것에 대한 synonim입니다. 적어도 파이썬에서. – darioo
[iterator 변수없이 범위 루프 용 Python을 구현할 수 있습니까?] (http://stackoverflow.com/questions/818828/is-it-possible-to-implement-a-python-for- 루프가없는 반복기 변수) –