Python - 如何在相邻数字的整数列表中找到最长的序列

帕特里克

我如何在数字对列表中找到最长的子列表,其差异为 1。所以“数字邻居”可以是元素 1 和 2 或元素 7 和 6。

如果列表是 [7, 1, 2, 5, 7, 6, 5, 6, 3, 4, 2, 1, 0],那么所需的输出应该是 4。子列表将是 [7, 6、5、6]。

这就是我现在所拥有的。for 循环公式真的坏了,我不知道如何解决这个问题。

list = [7, 1, 2, 5, 7, 6, 5, 6, 3, 4, 2, 1, 0]

sublist = []
for i in list:
    if list[i] - list[i+1] == 1 or list[i] - list[i+1] == -1:
        sublist.append(i)
                
print(sublist)
print(len(sublist))
乔兰·比斯利

最好将这些类型的问题分解成各个部分

这里的主要问题是获取所有顺序序列

def get_sequences_iter(an_array):     
    # start a new sequence with first value (or empty)
    sequence = an_array[:1] 
    # check each index with the value that comes before 
    for idx in range(1,len(an_array)):
        if an_array[idx] - an_array[idx-1] in {1,-1}:
            # this is part of a run append it
            sequence.append(an_array[idx])
        else:
            # run is broken
            yield sequence
            # start a new run
            sequence = [an_array[idx]]
     #capture final sequence
     yield sequence
         

一旦你有了这个,你可以在 O(n) 时间内得到一个列表中的所有运行

sequences =  get_sequences_iter([7, 1, 2, 5, 7, 6, 5, 6, 3, 4, 2, 1, 0])
for sequence in sequences:
    print(sequence)

希望有了这些信息,您可以弄清楚如何解决您的实际问题

但以防万一

print(max(sequences,key=len)) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中找到最长的单词?

如何在 Python 的列表中找到 yst 整数的第 x 位数字?

在整数列表中找到最长的0序列

Python在DNA序列中找到最长的ORF

如何在Python中找到相同的序列

如何在Python3中找到按数字顺序排列的列表中的数字?

计算python整数列表中重复数字的最长连胜

如何在 Python 中找到列表?

如何在 Python 中创建一个接受数字和整数列表的函数?

如何在列表中找到某个数字的平均值 [python]

如何在列表中找到多数民众赞成的数字python3

如何在python 3中的任意列表中找到缺失的数字?

如何从列表中找到数字的中位数?Python

如何在 Python 中找到移动对象的位置序列?

如何在python中的列表中找到嵌套列表的位置

如何从Python中的一组列表中找到最长的匹配项?

如何在 Python 中找到最接近数字的值?

如何在 Haskell 的列表中找到最长增加的数字部分?

在Python中找到数字列表的频率分布

如何在python中找到两个相邻节点之间的负权重

如何在Python列表中找到元素[-1]的正索引

如何在python列表中找到最相似的单词

如何在python中的列表中找到重复的对?

如何在python中找到列表的排序位置/索引?

如何在python列表中找到最大位数

如何在python中找到2D列表的邻居?

如何在Python的嵌套列表中找到给定值的索引?

如何在python中找到列表数组的最小点

如何在Python列表中找到“最近的邻居”?