2013-09-09 3 views
-1

Мне нужно распечатать списки на нескольких строках каждый элемент N, не разбивая исходный список в меньших списках.Печать элементов списка, разбитого на новые строки, каждый N элементов

Например, при N = 3

Учитывая это:

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

Я хочу питон печатать ЭТО:

A B C 

D E F 

Спасибо за вашу помощь

ответ

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 

Используя print функцию py3.x в:

>>> 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 
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' 
+0

Остерегайтесь, когда 'len (MY_LIST)% 3! = 0' ... – Eric

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 
Смежные вопросы