2014-07-24 220 views
0

提取两个数字是否有下面的代码pythonic的方法:在每次循环迭代

for i in range(len(a)/2): 
     print a[2*i], a[2*i+1] 

在每次循环迭代我想提取接下来的两个数字。

顺便说一句,我使用Python 2.7

回答

1

使用grouperitertools documentation

from itertools import izip_longest 

def grouper(iterable, n, fillvalue=None): 
    "Collect data into fixed-length chunks or blocks" 
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx 
    args = [iter(iterable)] * n 
    return izip_longest(fillvalue=fillvalue, *args) 

用法:

>>> a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] 
>>> for a, b in grouper(a, 2): 
...  print a, b 
... 
a b 
c d 
e f 
g h 
i j 
2

可以跳过编号,与range功能本身,这样

for i in range(0, len(a), 2): 

它将开始与0和迭代,直到len(a),但它会将i的值增加2.因此,您的逻辑可以简单写成这样:

print a[i], a[i+1]