2016-04-25 278 views
1

我将如何去打印python上每行只打印10个项目。例如,这行代码:在Python上打印特定的行数

for index, item in enumerate (list1): 
    if item == 'P': 
     print (index, end=' ') 

我得到的结果进行水平打印,而不是垂直“结束=””,但我需要得到它的每行打印多达10个字符,以得到的结果会是这个样子:

2 3 5 7 11 13 17 19 23 29 
31 37 41 43 47 53 59 61 67 71 
73 79 83 89 97 

任何帮助,将不胜感激

回答

0

只需使用%

printed = 0 
for index, item in enumerate(list1): 
    if item == 'P': 
     print(index, end=' ') 
     if printed % 10 == 0 and printed != 0: 
      print('\n') 
     printed += 1 
0

你可以大块的项目:

from itertools import chain, islice 

def chunk(iterable, size=10): 
    """Yield chunks of given size from iterable.""" 
    iterator = iter(iterable) 
    for i in iterator: 
     yield chain((i,), islice(iterator, size-1)) 

pitems = (i for i, v in enumerate(list1) if v == 'P') 
for chk in chunk(pitems): 
    print(' '.join(str(n) for n in chk)) 

chunk函数把一个可迭代到给定大小的组(在这种情况下,10)。 pitems = (...)行筛选您想要索引的项目。然后,我们将筛选的项目分成10组,使用chunk并打印每个组。

0

你可以把它分成10个子目录,然后打印出来。

from itertools import islice 

sublists = [islice(list1, i*10, (i+1)*10) for i in range(len(list1)/10 +1)] 
for sublist in sublists: 
    print ' '.join(map(str, sublist)) 
0

这实际上是在Python zip docs中记录的。在你的情况,因为你想要的尾随位,你会希望使用itertools.zip_longest

primes = [i for i,v in enumerate(list1) if v == 'P'] 

from itertools import zip_longest 
for group in zip_longest(*[iter(primes)]*10): 
    print(group) 
0

你可以有一个计数器设定为10至开始和减1就每次打印时。当你打印10你的柜台将是零。当时打印新行并将计数器重置为10.

item_cnt_in_line = 10 
for index, item in enumerate (list1): 
    if item == 'P': 
     if item_cnt_in_line == 0: 
      print() 
      item_cnt_in_line = 10 

     print (index, end=' ') 
     item_cnt_in_line -= 1