FerromanописАлся я:):
Реализация map вроде бы верная, но что-то точно работает не как ожидается, так как 1+5+8 на самом деле не равняется 15.
1 2 3
4 5 6
7 8 9
--------------
12 15 18
FerromanописАлся я:):
Реализация map вроде бы верная, но что-то точно работает не как ожидается, так как 1+5+8 на самом деле не равняется 15.
1 2 3
4 5 6
7 8 9
--------------
12 15 18
>>> def mmap(f, *args):
... return [f(*t) for t in zip(*args)]
...
>>> mmap(lambda x,y,z:x+y+z, [1, 4, 7], [2, 5, 8], [3, 5, 9])
[6, 14, 24]
>>> def mmap(f, *args):
... return [f(*t) for t in zip(*args)]
...
>>> mmap(lambda x,y,z:x+y+z, [1, 4, 7], [2, 5, 8], [3, 5, 9])
[6, 14, 24]
>>> map(lambda x,y,z:x+y+z, [1, 4, 7], [2, 5, 8], [3, 5, 9])
[6, 14, 24]
map = lambda f, *args: (f(*t) for t in zip(*args))
map = lambda f, *args: (f(*t) for t in zip(*args))
map = lambda f, *args: [(*t) for t in zip(*args)]
такая функция вернет генератор, чтобы вернула список, надо использовать квадратные скобки:Ну да-да … это мой баг …map = lambda f, *args: [(*t) for t in zip(*args)]
def filt(func, ls):
if func:
return [i for i in ls if func(i)]
else:
return [i for i in ls if i]
filt = lambda func, ls: [i for i in ls if func(i)] if func else [i for i in ls if i]