考虑一下问题:给定一个整数数组,返回该数组递减的次数。因此,[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;
}
我只知道如何使用for或while循环并跟踪索引来解决此问题。我不知道使用
map
之类的方法或使用列表或理解的任何功能方式,但这就是我希望存在的方式。 最佳答案
sum(a > b for a, b in zip(array, array[1:]))