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