Python 这两个返回语句之间有什么区别?

Python 这两个返回语句之间有什么区别?,python,arrays,max,Python,Arrays,Max,这是codesignal的一个问题。我尝试了下面的第二段代码,但没有通过所有测试。但第一个片段确实如此。为什么?这两个片段之间有什么区别 上下文:给定一个整数数组,找到具有最大乘积的相邻元素对并返回该乘积 def adjacentElementsProduct(inputArray): return max([inputArray[i]*inputArray[i+1] for i in range(len(inputArray)-1)]) def adjacentElementsPr

这是codesignal的一个问题。我尝试了下面的第二段代码,但没有通过所有测试。但第一个片段确实如此。为什么?这两个片段之间有什么区别

上下文:给定一个整数数组,找到具有最大乘积的相邻元素对并返回该乘积

def adjacentElementsProduct(inputArray):
    return max([inputArray[i]*inputArray[i+1] for i in range(len(inputArray)-1)])


def adjacentElementsProduct(inputArray):
    for i in range(len(inputArray)-1):
        return max([inputArray[i]*inputArray[i+1]])
你试过这些吗

第一个返回列表的最大值


第二个返回
inputArray[0]*inputArray[1]
。循环永远不会执行到底。

第二个循环构建一个包含1项的列表,然后返回该项(它是最大值、最小值,以及任何您想调用它的值!)。
for
循环在返回之前只迭代一次。第一个实际构建了一个相邻值的倍数列表,然后返回该列表的最大值。要添加到上述响应中,
return
语句在循环中的第一项之后执行,退出函数。它永远不会进入
范围的其余部分
G.Anderson-我在编辑我的帖子,以便在您键入时添加您的建议。我是否将其更改为
范围内的I(len(inputArray)+1:
这样它可以贯穿整个范围?正确的方法是你的第一个版本。所以第二个版本没有办法做到这一点?你可以按照列表理解的方法,首先创建一个列表,并在其上调用max。但它不会带来任何东西,速度较慢,可读性较差。