2024-04-25 22:13:50 发布
网友
c = [1,2,3,4,5,6,7,8,9,10] for a,b in func(c): doSomething()
所以func()必须返回(1,2) (2,3) (3,4) ... (8,9) (9,10)
(1,2) (2,3) (3,4) ... (8,9) (9,10)
Python2.7中是否有一种优雅的方法来实现这一点?在
有很多方法
>>> a = [1,2,3,4,5,6,7,8,9,10] >>> list(zip(a,a[1:])) [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (9, 10)]
其他的方法是
[(a[i],a[i+1]) for i in range(len(a)-1)]
当你想要一个功能你可以做
当然,有很多方法。最简单:
def func(alist): return zip(alist, alist[1:])
这在Python2中花费了大量内存,因为zip生成了一个实际的列表,切片也是如此。有几种方法专注于提供内存节省的生成器,例如非常简单的:
zip
或者,你也可以让你的爱好者部署强大的itertools,就像@HughBothwell提出的pairwise方法一样。
itertools
pairwise
itertools documentation有一个解决方法:
from itertools import tee, izip def pairwise(iterable): "s -> (s0,s1), (s1,s2), (s2, s3), ..." a, b = tee(iterable) next(b, None) return izip(a, b)
那么
有很多方法
其他的方法是
[(a[i],a[i+1]) for i in range(len(a)-1)]
当你想要一个功能你可以做
^{pr2}$当然,有很多方法。最简单:
这在Python2中花费了大量内存,因为
^{pr2}$zip
生成了一个实际的列表,切片也是如此。有几种方法专注于提供内存节省的生成器,例如非常简单的:或者,你也可以让你的爱好者部署强大的
itertools
,就像@HughBothwell提出的pairwise
方法一样。itertools documentation有一个解决方法:
那么
^{pr2}$相关问题 更多 >
编程相关推荐