【问题标题】:Determine if the sequence is incremented? (python) [duplicate]确定序列是否递增? (蟒蛇)[重复]
【发布时间】:2023-04-06 00:18:02
【问题描述】:
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

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

【问题讨论】:

  • 您可以直接从 if 块返回 False

标签: python


【解决方案1】:

一找到就回来更好。您可以利用pythons built in functions 来做到这一点:

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 后立即终止。

文档

【讨论】:

    【解决方案2】:

    使用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
    

    【讨论】:

      【解决方案3】:

      你可以在一个班轮中做到这一点:

      all(seq[i] < seq[i+1] for i in range(len(seq)-1))
      

      致谢:this answer

      【讨论】:

        猜你喜欢
        • 2019-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        • 2014-09-09
        • 2016-07-11
        • 1970-01-01
        • 2019-02-28
        相关资源
        最近更新 更多