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

时间:2011-10-31 03:51:42

标签: python list jython

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

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)

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

3 个答案:

答案 0 :(得分:2)

当您退出循环时,您没有向列表中添加任何内容,并且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)

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

另外,您已拨打listlist,这实际上是list的构造函数,虽然这不是问题,但需要注意的是一个do not do

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

问题可能是当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上试过。