Python 如何按块获取线

Python 如何按块获取线,python,iterator,Python,Iterator,下面的问题很简单 根据下面的代码,“数据”由一列数字组成,比如说12个数字(见下文) 如何创建由四个数字组成的块?比如说 56.71739 56.67950 56.65762 56.63320 56.61648 56.60323 56.63215 56.74365 等等。。。因为我需要处理所有的块 感谢阅读,itertools模块提供了一个配方,可满足您的需要: from itertools import izip_longest def grouper(n, iterable, fill

下面的问题很简单

根据下面的代码,“数据”由一列数字组成,比如说12个数字(见下文)

如何创建由四个数字组成的块?比如说

56.71739
56.67950
56.65762
56.63320

56.61648
56.60323
56.63215
56.74365
等等。。。因为我需要处理所有的块


感谢阅读

itertools
模块提供了一个配方,可满足您的需要:

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)
这看起来像:

>>> corpus = (56.71739, 56.67950, 56.65762, 56.63320, 56.61648,
...           56.60323, 56.63215, 56.74365, 56.98378, 57.34681,
...           57.78903, 58.27959,)
>>> list(grouper(4, corpus))
[(56.71739, 56.6795, 56.65762, 56.6332),
 (56.61648, 56.60323, 56.63215, 56.74365),
 (56.98378, 57.34681, 57.78903, 58.27959)]
>>> print '\n\n'.join('\n'.join(group)
...                   for group
...                   in grouper(4, map(str, corpus)))
56.71739
56.6795
56.65762
56.6332

56.61648
56.60323
56.63215
56.74365

56.98378
57.34681
57.78903
58.27959
>>> 

非常感谢!我的数据实际上比我在这里发布的要复杂得多,但你给了我一个非常好的输入。我将尝试修改它并将其粘贴到我的代码中!干杯,伙计们
>>> corpus = (56.71739, 56.67950, 56.65762, 56.63320, 56.61648,
...           56.60323, 56.63215, 56.74365, 56.98378, 57.34681,
...           57.78903, 58.27959,)
>>> list(grouper(4, corpus))
[(56.71739, 56.6795, 56.65762, 56.6332),
 (56.61648, 56.60323, 56.63215, 56.74365),
 (56.98378, 57.34681, 57.78903, 58.27959)]
>>> print '\n\n'.join('\n'.join(group)
...                   for group
...                   in grouper(4, map(str, corpus)))
56.71739
56.6795
56.65762
56.6332

56.61648
56.60323
56.63215
56.74365

56.98378
57.34681
57.78903
58.27959
>>>