Jython中的max()函数如何工作?
我需要这个函数来告诉我一个列表中最长的正数序列。
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)
这个列表应该包含所有正数序列的长度,但最大值函数却没有正常工作。
3 个回答
0
问题可能出在你没有在数字用完时把索引加到列表里,所以如果列表的最后一部分是最长的序列,它就不会返回正确的值:
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上试过。
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
在你退出循环的时候,并没有把任何东西添加到你的列表里,而且 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
是一个用来创建列表的构造函数。虽然这不是问题,但这是一个需要注意的地方,最好不要这样做。