打印列表中每N个项目在新行上拆分的元素

时间:2013-09-09 19:54:31

标签: python list printing split

我需要在每N个元素的多行上打印我的列表,而不将原始列表拆分为较小的列表。

例如,N = 3

鉴于此:

MY_LIST = [ 'A', 'B', 'C', 'D', 'E', 'F']

我想让python打印这个:

A B C

D E F

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

您可以使用itertools.islice和生成器功能:

>>> import math
>>> from itertools import islice
def solve(lis, n):                                              
    it = iter(lis)
    le = float(len(lis))
    for _ in xrange(int(math.ceil(le/n))):
        yield " ".join(islice(it, n))

>>> for x in solve([ 'A', 'B', 'C', 'D', 'E', 'F'], 3):
...     print x
...     
A B C
D E F

使用py3.x' print函数:

>>> from __future__ import print_function
>>> print(*solve([ 'A', 'B', 'C', 'D', 'E', 'F'], 3), sep='\n')
A B C
D E F
>>> print(*solve([ 'A', 'B', 'C', 'D', 'E', 'F', 'G'], 3), sep='\n')
A B C
D E F
G

答案 1 :(得分:0)

试试这个:

'\n'.join([' '.join(i) for i in zip(*[iter(MY_LIST)]*N)])

示例:

>>> MY_LIST = [ 'A', 'B', 'C', 'D', 'E', 'F']
>>> N=3
>>> '\n'.join([' '.join(i) for i in zip(*[iter(MY_LIST)]*N)])
'A B C\nD E F'

答案 2 :(得分:0)

>>> for x in (MY_LIST[i:i + N] for i in xrange(0, len(MY_LIST), N)):
...    print " ".join(x)
A B C
D E F