我需要这个函数来告诉我列表中最长的正数序列。
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函数不起作用。
答案 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)
如果循环结束时列表为空,它将追加索引的最后一个计数。
另外,您已拨打list
,list
,这实际上是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上试过。