Python程序-在给定的数字列表中查找最大序列的程序
我需要设计一个python程序,它输出给定数字列表中的最大序列 比如说,Python程序-在给定的数字列表中查找最大序列的程序,python,python-3.x,list,sequence,Python,Python 3.x,List,Sequence,我需要设计一个python程序,它输出给定数字列表中的最大序列 比如说, INPUT = [1,2,3,2,4,5,6,7,8,1,0,4,5,6] 预期结果: [4, 5, 6, 7, 8] 有人能帮我翻译一下代码吗?你可以 from itertools import groupby from operator import itemgetter new_l = [] for k, g in groupby(enumerate(data), lambda ix : ix[0] - ix[
INPUT = [1,2,3,2,4,5,6,7,8,1,0,4,5,6]
预期结果:
[4, 5, 6, 7, 8]
有人能帮我翻译一下代码吗?你可以
from itertools import groupby
from operator import itemgetter
new_l = []
for k, g in groupby(enumerate(data), lambda ix : ix[0] - ix[1]):
new_l.append(list(map(itemgetter(1), g)))
print(max(new_l, key=lambda x: len(x)))
输出:
[4, 5, 6, 7, 8]
一种不使用内置python模块且代码复杂度为O(n)的方法 可以折叠成一个相对较短的内衬
$ python
Python 3.7.7 (default, May 7 2020, 21:25:33)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from itertools import groupby as g
>>> d, e, l, λ, m = [1,2,3,2,4,5,6,7,8,1,0,4,5,6], enumerate, len, list, max
>>> [i[1]for i in m((λ(s)for k,s in g(e(d),lambda j:j[0]-j[1])),key=lambda j:l(j))]
[4, 5, 6, 7, 8]
>>>
您好@Sociopath,您能帮我编写这个问题的代码吗?谢谢@Sociopath,代码运行成功并按预期输出。@SNS当您的助教看到这个非常好的代码时,他们会高兴地跳到他们的座位上!当然,你的方法是明智的…+1
$ python
Python 3.7.7 (default, May 7 2020, 21:25:33)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from itertools import groupby as g
>>> d, e, l, λ, m = [1,2,3,2,4,5,6,7,8,1,0,4,5,6], enumerate, len, list, max
>>> [i[1]for i in m((λ(s)for k,s in g(e(d),lambda j:j[0]-j[1])),key=lambda j:l(j))]
[4, 5, 6, 7, 8]
>>>