1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#from itertools import cycle
class CycleOld(object):
def __init__(self, seq):
self.seq = list(seq)
self.index = 0
self.min_index = 0
self.max_index = len(self.seq) - 1
def __call__(self):
return self.seq[self.index]
def prev(self):
if self.index == self.min_index:
self.index = self.max_index
else:
self.index -= 1
return self()
def next(self):
if self.index == self.max_index:
self.index = self.min_index
else:
self.index += 1
return self()
class Cycle(object):
def __init__(self, seq):
self.seq = list(seq)
self.len = len(self.seq)
self.index = 0
def __call__(self):
return self.seq[self.index % self.len]
def prev(self):
self.index -= 1
return self()
def next(self):
self.index += 1
return self()
def chop(seq, binsize):
bin = []
for i, el in enumerate(seq):
bin.append(el)
if i % binsize == binsize - 1:
yield bin; bin = []
if bin:
yield bin
if __name__ == "__main__":
print list(chop("precipitevolissimevolmente", 3))
# chop([1,2,3,4,5,6], 2)
# [[1,2], [3,4], [4.6]]
## cycle = Cycle2([1,2,3])
## print cycle()
## print cycle.prev()
## print cycle.prev()
## print cycle.prev()
## print cycle.prev()
## print "-"*10
## print cycle.next()
## print cycle.next()
## print cycle.next()
## print cycle.next()
|