|||
因为给的序列很短(要求不到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),指的是一个函数不断调用自身的行为。比如,以编程方式输出著名的斐波纳契数列。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-27 11:42
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社