给出一个清单
A = [1 2 3 4 5 6]
Run Code Online (Sandbox Code Playgroud)
是否有任何惯用(Pythonic)方式迭代它就好像它一样
B = [(1, 2) (3, 4) (5, 6)]
Run Code Online (Sandbox Code Playgroud)
索引除外?感觉就像C的延续:
for a1,a2 in [ (A[i], A[i+1]) for i in range(0, len(A), 2) ]:
Run Code Online (Sandbox Code Playgroud)
我不禁觉得应该有一些聪明的黑客使用itertools或切片或其他东西.
(当然,一次两个只是一个例子;我想要一个适用于任何n的解决方案.)
编辑:在Python中一次迭代字符串2(或n)个字符,但即使是最干净的解决方案(使用zip接受)也不能很好地推广到更高的n而没有列表理解和*-notation.
Mat*_*ttH 11
来自http://docs.python.org/library/itertools.html:
from itertools import izip_longest
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
i = grouper(3,range(100))
i.next()
(0, 1, 2)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4447 次 |
最近记录: |