Python 如何将数组中x处的值与x+处的值进行比较;1.

Python 如何将数组中x处的值与x+处的值进行比较;1.,python,Python,我注意到,在许多编码问题中,需要比较数组中的x与x+1,尽管我从未找到一种好方法 我怎么做?有可能吗?对不起,如果这似乎是一个noob问题,我还不是很好 以下是我通常尝试的: for x in range(len(nums)): if nums[x] > nums[x+1 < len(nums)]: count +=1 范围内x的(len(nums)): 如果nums[x]>nu

我注意到,在许多编码问题中,需要比较数组中的x与x+1,尽管我从未找到一种好方法

我怎么做?有可能吗?对不起,如果这似乎是一个noob问题,我还不是很好

以下是我通常尝试的:

       for x in range(len(nums)):
                    if nums[x] > nums[x+1 < len(nums)]:
                        count +=1 
范围内x的
(len(nums)):
如果nums[x]>nums[x+1
没问题!我们都从某处开始:) 这里有一种方法:

for x in range(len(nums) - 1):
   if nums[x] > nums[x+1]:
       #do something


您可以使用
reduce

例如,要获得列表的最大值,可以执行以下操作

import functools 
arr = [1,2,3,4,5]
print(functools.reduce(lambda a,b : a if a > b else b, arr))
输出

5
这也很好参考。

len(nums)将返回数组中的值数,当您在数组中循环时,将使用索引0(而不是1)访问该数组中的第一个值

例如:

nums = [1,3,5,7]
len(nums) == 4
如果你跑

for x in range(len(nums)):
   if nums[x] > nums[x+1]:
       #code here
您将在nums[x+1]处得到一个错误,因为在上一次迭代中,它变为nums[3+1],即nums[4],而该索引不在该数组中。你的最后一个索引是3

所以你真正想要的是

for x in range(len(nums)-1):
   if nums[x] > nums[x+1]:
       #code here

您可以使用此helper函数遍历任意序列的相邻对:

def pairwise(iterable):
    "s -> [[s0,s1], [s1,s2], [s2, s3], ...]"
    a, b = iter(iterable), iter(iterable)
    next(b, None)
    return zip(a, b)


nums = 1, 5, 3, 7
count = 0
for x, x1 in pairwise(nums):
    if x > x1:
        count += 1

用于范围内的x(len(nums)-1):
阵列?什么阵列?Python有列表,而不是数组。您必须使用类似于
numpy
的包才能获得数组。列表的索引非常严格(尤其是与
numpy
相比)。布尔索引(来自