0

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

例如,当 N = 3

鉴于这种:

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

我想让 python 打印这个:

A B C

D E F

谢谢您的帮助

4

3 回答 3

1

尝试这个:

'\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'
于 2013-09-09T19:59:37.833 回答
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
于 2013-09-09T19:56:55.007 回答
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
于 2013-09-09T20:25:04.300 回答