在Jython中max()函数是如何工作的?

2024-06-09 00:24:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要这个函数来告诉我列表中最长的正数序列。在

def longestSequencePos(nums):
    index = 0
    list = []
    integ = 0

    for obj in nums:
      if obj > 0:
        index = index +1
      else: 
        list.append(index)
        index = 0
    return max(list)

list应该包含正序列的所有长度,但是max函数不起作用。在


Tags: 函数inobj列表forindexifdef
3条回答

当退出循环且nums只有正整数时,不会向列表追加任何内容,您需要执行以下操作:

def longestSequencePos(nums): 
    index = 0
    list = []
    integ = 0 

    for obj in nums:
        if obj > 0:
            index = index +1
        else: 
            list.append(index)
            index = 0

    list.append(index)

    return max(list)

如果循环结束时列表为空,则将追加最后一个索引计数。在

另外,您已经调用了您的list,它实际上是list的构造函数,尽管这不是问题所在,但作为do not do需要注意

问题可能是,当nums用完时,您没有向列表添加索引,因此,如果列表以最长的序列结束,它将不会返回正确的值:

def longestSequencePos(nums):
    index = 0
    list = []
    integ = 0

    for obj in nums:
      if obj > 0:
        index = index +1
      else: 
        list.append(index)
        index = 0
    list.append(index)
    return max(list)

这个固定版本在普通python解释器中适用。我没试过jython。在

您不需要列表来执行此操作:

count = maxc = 0
for obj in nums:
    if obj > 0:
        count += 1
    else:
        maxc = max(count, maxc)
        count = 0
maxc = max(count, maxc)

相关问题 更多 >