Python中怎么实现类似Ruby的#each_cons功能
这篇“Python中怎么实现类似Ruby的#each_cons功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python中怎么实现类似Ruby的#each_cons功能”文章吧。
在Ruby中你可以这样做:
array=[1,2,3,4]array.each_cons(2).to_a=>[[1,2],[2,3],[3,4]]
对于此类内容,您应该查看的模块是:itertools
fromitertoolsimporttee,izipdefpairwise(iterable):"s->(s0,s1),(s1,s2),(s2,s3),..."a,b=tee(iterable)next(b,None)returnizip(a,b)
然后:
>>>list(pairwise([1,2,3,4]))[(1,2),(2,3),(3,4)]
对于更通用的解决方案,请考虑:
defsplit_subsequences(iterable,length=2,overlap=0):it=iter(iterable)results=list(itertools.islice(it,length))whilelen(results)==length:yieldresultsresults=results[length-overlap:]results.extend(itertools.islice(it,length-overlap))ifresults:yieldresults
这允许任意长度的子顺序和任意重叠。用法:
>>list(split_subsequences([1,2,3,4],length=2))[[1,2],[3,4]]>>list(split_subsequences([1,2,3,4],length=2,overlap=1))[[1,2],[2,3],[3,4],[4]]
这样就可以达到类似的效果了。
以上就是关于“Python中怎么实现类似Ruby的#each_cons功能”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。