Набросал класс для “ограничения” range
т.е создается экземпляр с минимумом и максимумом и вызыватся для создания цикла %)
выглядит примерно так, описать сложно
>>> x, y = 0, 50
>>> lr = lrange(5,10)
>>> for i in lr(x,y):
print(i)
5
6
7
8
9
10
еще вариант:
for i in lrange(min,max)(start,stop):
для чево нужно?
например для прохода по спискам, чтоб не ловить индекс ерроры
что-то типо:
for x in range(start,stop):
try:
li = 0
except IndexError:
continue
превращяется в
for x in lr(start,stop):
li = 0
очень удобно если неизвестны заранее x и y
запостил для критики и предложений
############ КЛАСС ################
class lrange:
mi = None
ma = None
def __repr__(self):
return ‘lrange(%s,%s)’ % (self.mi, self.ma)
def __init__(self, mi = None, ma = None):
‘lrange(mi, ma): mi - minimum, ma - maximum ’
self.mi = mi
self.ma = ma
def __call__(self, start, stop = False, step = True):
self.range = range(start, stop, step)
return self
def __iter__(self):
self.iterator = iter(self.range)
return self
def __next__(self):
while True:
step = next(self.iterator)
if self.mi and self.mi <= step and \
self.ma and self.ma >= step:
return step
##################################