gabrielvie
3/29/2018 - 6:02 PM

Iterators

from itertools import islice

class Fibonacci:
    def __init__(self):
        self.prev = 0
        self.curr = 1
    

    def __iter__(self):
        return self

    
    def __next__(self):
        value = self.curr
        self.curr += self.prev
        self.prev = value
        return value


fibonacci = Fibonacci()
list(islice(fibonacci, 0, 10))
# [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
from itertools import (islice, cycle)

programing_languages = cycle(['php', 'javascript', 'python', 'golang'])

limited = islice(programing_languages, 0, 2)

for pl in limited:
    print(pl)

# php
# javascript
from itertools import cycle

colors = cycle(['crimsonred', 'purple', 'seablue'])

next(colors)
# crimsonred
next(colors)
# purple
next(colors)
# seablue
next(colors)
# crmisonred (AGAIN!)
from itertools import count

counter = count(start = 13)

next(counter)
# 13
next(counter)
# 14
next(counter)
# 15
next(counter)
# 16