Python 代码阅读(第 3 篇):列表的最小公倍数
本篇阅读的代码实现了计算列表中元素的最小公倍数的功能。
本篇阅读的代码片段来自于30-seconds-of-python。
lcm
复制代码
两个数的最大公约数和最小公倍数满足如下公式:
复制代码
而对于两个以上数据的列表时,只需要将任意两个数的最小公倍数和剩下的其他数字继续计算最小公倍数即可。也就是说:
复制代码
因此我们使用functools.reduce
函数对列表进行迭代。
functools.reduce
复制代码
reduce
函数中的第一个参数是函数function
,它接受两个参数。reduce
函数将function
累积的应用在第二个参数,iterable
,可迭代的对象上。function
使用可迭代对象的前两个值作为输入参数,并将返回值和可迭代对象的下一个值作为function
的输入参数进行下一次迭代,直到用尽可迭代对象的所有值。例如以下的例子:
复制代码
reduce
函数大致相当于:
复制代码
实际使用
上面的代码片段是展示了 Python 一种使用方法。细心的同学可以看出来,如果要投入实际生产应用,lcm
函数是有一些问题的,主要是两点,一是异常处理,包括除零等;另一个是最小公倍数都是正整数,而该函数的返回值可能出现负数。
30-seconds-of-python 的代码主要是展现了一种思路。并不会对边缘情况和异常进行检查,背后的原因是为了保持项目的简单性,展示有趣的技术和思维方式。所有的代码片段都假设用户对问题、语言和可能发生的潜在错误有基本的了解,因此不会添加异常处理或参数检查
版权声明: 本文为 InfoQ 作者【Félix】的原创文章。
原文链接:【http://xie.infoq.cn/article/47752813c157c2f8208a3adf1】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论