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)
假设您的列表已排序:
>>> 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:修复最后一步;
归档时间: |
|
查看次数: |
1651 次 |
最近记录: |