Python 2.7 使用python从列表中查找最长的连续子列表

Python 2.7 使用python从列表中查找最长的连续子列表,python-2.7,Python 2.7,我有一个列表说[1,3,4,5,2,7,8,9,11,10,9,8,7,6,7,8],在这个列表中,我们可以有像[1,3,4,5],[7,8,9,11],[11,10,9,8,7,6]这样的序列,所以我需要编写一个逻辑来找到子列表的最长序列(示例中的最后一个)。列表将是正整数,但可以是任意顺序(asc、desc) 好的,这是我尝试查找升序序列的过程,可能正在工作: l = [1,3,4,3,2,1,7,8,9,11,12,12,8,7,6,7,8] ll = [] temp = l[0] ll.

我有一个列表说
[1,3,4,5,2,7,8,9,11,10,9,8,7,6,7,8]
,在这个列表中,我们可以有像
[1,3,4,5],[7,8,9,11],[11,10,9,8,7,6]
这样的序列,所以我需要编写一个逻辑来找到子列表的最长序列(示例中的最后一个)。列表将是正整数,但可以是任意顺序(asc、desc)

好的,这是我尝试查找升序序列的过程,可能正在工作:

l = [1,3,4,3,2,1,7,8,9,11,12,12,8,7,6,7,8]
ll = []
temp = l[0]
ll.append(l[0])
keyval = {}

for x in range(1,len(l)):
    #print (str(x)+ "  :"+str(l[x]))
    if l[x] >= temp :
      ll.append(l[x])
      temp = l[x]
      #print (ll)
    else:
      keyval[len(ll)] = ll
      ll=[]
      temp = l[x]

max_key = max(keyval.keys())
print (keyval[max_key])
输出为:[7,8,9,11,12,12]

但我找不到对描述顺序进行积分的逻辑。请帮助

一个可能的解决方案(尽管这是一个相当丑陋的解决方案:-):


我们自己的尝试呢?:)您可以学习并创建一个示例。这使得我们可以更容易地帮助你。由于无法思考正确的逻辑,我可以发布一些程序,但这不值得。斯蒂芬·劳赫和威伦@请你现在看一看。嗨@Bimlesh,看看你的问题历史,你还没有接受答案。如果有任何答案解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。
def longest_consecutive(values, elem):
    global long
    if not values or values[-1] + 1 == elem:
        values.append(elem)
        if len(values) > len(long):
            long = values[:]  # shallow copy
    else:
        values = []
    return values

example = [1, 3, 4, 5, 2, 7, 8, 9, 11, 10, 9, 8, 7, 6, 7, 8]
long = []  # modified by reducing function
longest = []
reduce(longest_consecutive, example, [])
longest.append(long)
reduce(longest_consecutive, example[::-1], [])  # [::-1] means reverse order
longest.append(long[::-1])  # result must be reversed too
print(max(longest))