2016-04-25 118 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