道听途说分享 http://blog.sciencenet.cn/u/lucky7

博文

Rosalind - HAMM - Alignment

已有 1653 次阅读 2019-9-8 10:27 |个人分类:Rosalind|系统分类:生活其它| Alignment

因为给的序列很短(要求不到1kb),我的无脑loop解法毫无压力:

n = 0
for i in range(len(s1)):
    if s1[i] != s2[i]:
        n += 1

print(n)


当然可以用zip()函数代替for loop做迭代会更pythonic. 而且zip还有一个好处是产生iterator, 即每次内存里只放一次iteration的内容,这样在序列很长的时候就不会有内存的问题:

sum([a != b for a, b in zip(s1, s2)])


python3之后这些加减乘除等于不等于都可以operator模块了,确实也快:

sum(map(operator.ne, s1, s2))


再重温一下与重复相关的几个概念(摘自):

  • 循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while语句。

  • 迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for语句。

  • 遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。

  • 递归(recursion),指的是一个函数不断调用自身的行为。比如,以编程方式输出著名的斐波纳契数列。




https://wap.sciencenet.cn/blog-257922-1197111.html

上一篇:王文老师组Science同期三篇关于反刍动物文章的小编总结
下一篇:Rosalind - IPRB - Heridity
收藏 IP: 144.92.38.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 16:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部