我需要在每个 N 元素的多行上打印我的列表,而无需将原始列表拆分为较小的列表。
例如,当 N = 3
鉴于这种:
MY_LIST = [ 'A', 'B', 'C', 'D', 'E', 'F']
我想让 python 打印这个:
A B C
D E F
谢谢您的帮助
尝试这个:
'\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'
您可以使用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
>>> 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