在lis中返回连续正数序列

2024-03-29 08:56:08 发布

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

我需要返回列表中最长的正数序列。 目前我有:

def longestSequencePos(nums):
    longest_sequence = []
    current_sequence = []

    for obj in nums:
        if current_sequence and current_sequence[-1]+1 == obj:
            current_sequence.append(obj)
        else:
            current_sequence = [obj]
        if len(current_sequence) > len(longest_sequence):
            longest_sequence = current_sequence
    return sum(1 for obj in longest_sequence if obj > 0)

这只返回结果出现的正数的总数,所以当序列是5、8、12时它就不起作用了。任何帮助都将不胜感激。在


Tags: andinobj列表forlenlongestif
2条回答

调查maximum subsequence问题。在

在python中,您可以:

def find_longest_sequence(source_list):
    longest_sequence = []
    current_sequence = []

    for obj in source_list:
            if current_sequence and current_sequence[-1]+1 == obj:
                current_sequence.append(obj)
            else:
                current_sequence = [obj]
            if len(current_sequence) > len(longest_sequence):
                longest_sequence = current_sequence
    return longest_sequence
print "Longest sequence:", find_longest_sequence([1,5,6,7,3,4,1,2,3,4,5,5,6,7])

相关问题 更多 >