第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

Python代碼閱讀(第3篇):列表的最小公倍數(shù)

標(biāo)簽:
Python

本篇阅读的代码实现了计算列表中元素的最小公倍数的功能。

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

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函数对列表进行迭代。

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

实际使用

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

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

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消