在每个循环迭代中提取两个数字

时间:2014-07-24 14:43:50

标签: python python-2.7

以下代码是否有pythonic方式:

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

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

是的,我正在使用Python 2.7

2 个答案:

答案 0 :(得分:2)

您可以使用range功能本身跳过这些数字,就像这样

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

它将从0开始并迭代到len(a),但它会将i的值增加2.因此,您的逻辑可以像这样编写

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

答案 1 :(得分:1)

使用itertools documentation中的grouper

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