Python中最长的不同连续列表

Bob*_*Bob 2 python iteration list

我有一个清单:

a = [2, 3, 5, 6, 6, 7, 10, 11, 13, 14, 15, 16, 16, 17, 18, 20, 21]
Run Code Online (Sandbox Code Playgroud)

是否有可能创建一个显示最长的不同连续元素列表的函数?

请展示如何做到这一点

在这种情况下,答案应该是:

13, 14, 15, 16, 17, 18
Run Code Online (Sandbox Code Playgroud)

Sil*_*ost 7

假设您的列表已排序:

>>> from itertools import groupby
>>> z = zip(a, a[1:])
>>> tmp = [list(j) for i, j in groupby(z, key=lambda x: (x[1] - x[0]) <= 1)]
>>> max(tmp, key=len)
[(13, 14), (14, 15), (15, 16), (16, 16), (16, 17), (17, 18)]
>>> list(range(_[0][0], _[-1][-1]+1))
[13, 14, 15, 16, 17, 18]
Run Code Online (Sandbox Code Playgroud)

ETA:修复最后一步;