Python 代码实现列表的最小公倍数

 更新时间:2021年11月11日 14:05:27   作者:Felix  
这篇文章主要介绍了Python 代码实现列表的最小公倍数,代码实现了计算列表中元素的最小公倍数的功能,包括公式介绍,需要的朋友可以参考一下

本篇阅读的代码片段来自于30-seconds-of-python(https://github.com/30-seconds...)。

1. lcm

from functools import reduce
from math import gcd

def lcm(numbers):
  return reduce((lambda x, y: int(x * y / gcd(x, y))), numbers)

# EXAMPLES
lcm([12, 7]) # 84
lcm([1, 3, 4, 5]) # 60

两个数的最大公约数和最小公倍数满足如下公式:

lcm(a, b) * gcd(a, b) = abs(a * b)

而对于两个以上数据的列表时,只需要将任意两个数的最小公倍数和剩下的其他数字继续计算最小公倍数即可。

也就是说:

lcm(a, b, c, ...) = lcm(lcm(a, b), c, ...)

因此我们使用functools.reduce函数对列表进行迭代。

2. functools.reduce

functools.reduce(function, iterable[, initializer])

reduce函数中的第一个参数是函数function,它接受两个参数。reduce函数将function累积的应用在第二个参数,iterable,可迭代的对象上。function使用可迭代对象的前两个值作为输入参数,并将返回值和可迭代对象的下一个值作为function的输入参数进行下一次迭代,直到用尽可迭代对象的所有值。例如以下的例子:

# ((((1+2)+3)+4)+5)
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])

reduce函数大致相当于:

def reduce(function, iterable, initializer=None):
    it = iter(iterable)
    if initializer is None:
        value = next(it)
    else:
        value = initializer
    for element in it:
        value = function(value, element)
    return value

3. 实际使用

上面的代码片段是展示了Python一种使用方法。细心的同学可以看出来,如果要投入实际生产应用,lcm函数是有一些问题的,主要是两点,一是异常处理,包括除零等;另一个是最小公倍数都是正整数,而该函数的返回值可能出现负数。

30-seconds-of-python(https://github.com/30-seconds... ) 的代码主要是展现了一种思路。并不会对边缘情况和异常进行检查,背后的原因是为了保持项目的简单性,展示有趣的技术和思维方式。所有的代码片段都假设用户对问题、语言和可能发生的潜在错误有基本的了解,因此不会添加异常处理或参数检查。

到此这篇关于Python 代码实现列表的最小公倍数的文章就介绍到这了,更多相关Python 列表最小公倍数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python基础学习列表+元组+字典+集合

    Python基础学习列表+元组+字典+集合

    这篇文章主要介绍了Python基础学习列表+元组+字典+集合,文章接上一篇内容学习,主要针对python零基础的同学,感兴趣的话就学起来吧
    2022-05-05
  • Python代码实现KNN算法

    Python代码实现KNN算法

    这篇文章主要为大家详细介绍了Python代码实现KNN算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • python操作XML格式文件的一些常见方法

    python操作XML格式文件的一些常见方法

    最近有同学询问如何利用Python处理xml文件,特此整理一篇比较简洁的操作手册,下面这篇文章主要给大家介绍了关于python操作XML格式文件的一些常见方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 详解python模块pychartdir安装及导入问题

    详解python模块pychartdir安装及导入问题

    这篇文章主要介绍了python模块pychartdir导入问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 从多个tfrecord文件中无限读取文件的例子

    从多个tfrecord文件中无限读取文件的例子

    今天小编就为大家分享一篇从多个tfrecord文件中无限读取文件的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • pyqt5 QProgressBar清空进度条的实例

    pyqt5 QProgressBar清空进度条的实例

    今天小编就为大家分享一篇pyqt5 QProgressBar清空进度条的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python 如何对文件目录操作

    Python 如何对文件目录操作

    这篇文章主要介绍了Python 如何对文件目录操作,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 如何将yolov5中的PANet层改为BiFPN详析

    如何将yolov5中的PANet层改为BiFPN详析

    现在yolov5的neck用的是PANet,在efficient论文中提出了BiFPN结构,还有更加不错的性能,下面这篇文章主要给大家介绍了关于如何将yolov5中的PANet层改为BiFPN的相关资料,需要的朋友可以参考下
    2022-06-06
  • Selenium 安装和简单使用的实现

    Selenium 安装和简单使用的实现

    这篇文章主要介绍了Selenium 安装和简单使用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python首次安装后运行报错(0xc000007b)的解决方法

    Python首次安装后运行报错(0xc000007b)的解决方法

    最近在安装完Python后运行发现居然报错了,错误代码是0xc000007b,于是通过往上查找发现是因为首次安装Python缺乏VC++库的原因,下面通过这篇文章看看如何解决这个问题吧。
    2016-10-10

最新评论