【发布时间】:2020-01-25 10:06:47
【问题描述】:
我在 Coursera 上关注 Bioinformatics I。我的一位同学使用函数式编程解决了pattern_to_number 问题:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from functools import reduce
def pattern_to_number(pattern):
code = dict(zip("ACGT",range(4)))
return reduce(lambda x,c: 4*x+code[c], pattern, 0)
print(pattern_to_number(sys.argv[1]))
这就是我在本地运行小程序的方式:
$ python3 ./pattern_to_number.py 'ATGCAA'
输出是(正确的):912
我了解lambda 和reduce 的使用。我不明白上面的功能解决方案如何能够模仿以下传统方法的功能。计算 4 的 i 次方。
for i, val in enumerate(pattern[::-1]):
total += dict[val] * (4**i)
那么 lambda 的主体在哪里(或如何)计算 4 的 code[c] 的幂?
【问题讨论】:
标签: python lambda functional-programming