函数式编程方法,或大多数Pythonic方式,一次使用两个相邻变量循环遍历数组

dje*_*lin 1 python language-agnostic arrays functional-programming

考虑问题:给定一个整数数组,返回数组减少的次数.所以[3,2,1]减少了两次(在3和2); [1,2,3,4,5,4,3,2,1]减少4倍(5,4,3,2),[1]减少无.

在任何语言的for循环中解决这个问题非常容易:

int result = 0;
for (int i = 0; i < array.length - 1; i++) {
    if (array[i] > array[i+1]) result += 1;
}
Run Code Online (Sandbox Code Playgroud)

我只知道如何使用for或while循环来解决这个问题并跟踪索引.我不知道使用类似map或使用列表或理解的方法的任何功能方式,但这是我希望存在的.

Leo*_*eon 6

一个很好的方法是将zip方法与sum结合使用:

sum(a > b for a, b in zip(array, array[1:]))
Run Code Online (Sandbox Code Playgroud)