以下代码是否有pythonic方式:
for i in range(len(a)/2):
print a[2*i], a[2*i+1]
在每次循环迭代中,我想提取接下来的两个数字。
是的,我正在使用Python 2.7答案 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