Александър обнови решението на 12.03.2013 23:54 (преди над 11 години)
+from functools import lru_cache
+
+
+def groupby(func, seq):
+ keys = set(map(func, seq))
+ return {key: list(filter(lambda x: func(x) == key, seq)) for key in keys}
+
+
+def iterate(func):
+ result = lambda x: x
+ compose = lambda f, g: lambda x: f(g(x))
+ while True:
+ yield result
+ result = compose(func, result)
+
+
+def zip_with(func, *iterables):
+ args = list(zip(*iterables))
+ for arg in args:
+ yield func(*arg)
+
+
+def cache(func, cache_size):
+ @lru_cache(maxsize=cache_size, typed=True)
+ def func_cached(*args):
+ return func(*args)
+ return func_cached
Идеята е вие да си напишете нещото, което кешира. Не да ползвате functools.lru_cache
:)
Иначе, добро решение.