为了账号安全,请及时绑定邮箱和手机立即绑定

定义获取列表中最高乘积对的函数

定义获取列表中最高乘积对的函数

皈依舞 2021-08-14 16:40:18
我正在尝试编写一个函数,该函数给出列表中最高一对相邻元素的乘积。对于我的代码,gala = [1, 2, 3, 4, 5]def adjacentElementsProduct(inputArray):    for i in range(len(inputArray)):        if inputArray[i] * inputArray[i+1] > inputArray[i+1] * inputArray[i+2]:            return  inputArray[i] * inputArray[i+1]     elif inputArray[i+1] * inputArray[i+2] > inputArray[i] * inputArray[i+1] and inputArray[i+1] * inputArray[i+2] > inputArray[i+2] * inputArray[i+3]:        return  inputArray[i+1] * inputArray[i+2]    elif inputArray[i+2] * inputArray[i+3] > inputArray[i+1] * inputArray[i+2] and inputArray[i+2] * inputArray[i+3] > inputArray[i+3] * inputArray[i+4]:         return  inputArray[i+2] * inputArray[i+3]    else:        return inputArray[i+3] * inputArray[i+4] return adjacentElementsProductadjacentElementsProduct(gala)这里的输出是 20(因为 4 x 5 是最高的相邻对)。即使我更改了数字的顺序及其符号,此函数也适用于给定的列表。但是,如果列表的长度发生更改,则代码会中断。如果列表是gala = [1, -6]要么gala = [2, 5, 7, -9, 10, 0, 11]我希望函数第一个列表的输出为 -6,第二个为 35。但我的函数在此类列表中会中断。
查看完整描述

2 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

如果我没有正确理解您的问题,我认为您的功能可以简化为:


def adjacentElementsProduct(elm):

   if len(elm) < 2:

       return None

   return max(k*v for k, v in zip(elm, elm[1:]))

所以:


>>> adjacentElementsProduct([1, 2, 3, 4, 5])

20

>>> adjacentElementsProduct([1, -6])

-6

>>> adjacentElementsProduct([2, 5, 7, -9, 10, 0, 11])

35


查看完整回答
反对 回复 2021-08-14
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

方法的修改:


from operator import mul


def adjacentElementsProduct(elm):

   if len(elm) < 2:

       return None

   return max(map(mul, elm, elm[1:]))

一个更短的版本:


def adjacentElementsProduct(elm):

   return max(map(mul, elm, elm[1:])) if len(elm) < 2 else None

还有一个:


from operator import mul

from itertools import starmap


def adjacentElementsProduct(elm):

   if len(elm) < 2:

       return None

   return max(starmap(mul, zip(elm, elm[1:])))


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号