确定序列是否递增?(Python)

3
def isIncreasing(seq):
    flag = True
    for i in range(len(seq) - 1):
        if seq[i + 1] < seq [i]:
            flag = False
    return flag


a = [1, 2, 3, 4, 5]  # print True
b = [2, 3, 1, 5, 4]  # print False

我有两个序列。 如果序列是递增的,是否有更好的修改函数的方法?


5
你可以直接在 if 代码块中返回 False。 - Adonis
3个回答

1
你可以用一行代码实现它:
all(seq[i] < seq[i+1] for i in range(len(seq)-1))

来源:此答案

(保留HTML格式,不解释)

1

发现一个即可立即返回更好。您可以利用Python内置函数来实现:

def isIncreasing(seq):
   return all(a<b for a,b in zip(seq,seq[1:]))

这将把您的序列压缩成一对:

[1,2,3,4] => [(1,2),(2,3),(3,4)]

并检查每一对。 all() 在找到一个 False 后立即终止。 文档:

1
使用 numpy.diff()all()
In [33]: all(i>=1 for i in np.diff(b))
Out[33]: False

In [34]: all(i>=1 for i in np.diff(a))
Out[34]: True

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接