5 апреля 2013 г.

Полезные функции


Создание собственной версии функции map(func, ...)

Имеющиеся функции map и zip, имеют высокую производительность, но и мы можем добиться той же функциональности, написав несколько строк. В предыдущем посте и создавали функцию map для одной последовательности, сейчас же мы создадим ее для нескольких последовательностей:

#эта версия опирается на конструкцию *args передачи 
#аргументов – она получает множество аргументов-#последовательностей
def mymap(func, *seqs):
    res = []
    for args in zip(*seqs):
        res.append(func(*args))
    return res

print(mymap(abs, [-2, -1, 0, 1, 2]))
print(mymap(pow, [1, 2, 3], [2, 3, 4, 5]))
-----------------------------------------------------------------
Теперь создадим версию функции, которая использует генератор списков:

def mymap(func, *seqs):
    return [func(*args) for args in zip(*seqs)]

print(mymap(abs, [-2, -1, 0, 1, 2]))
print(mymap(pow, [1, 2, 3], [2, 3, 4, 5]))

Комментариев нет:

Отправить комментарий