2016-04-25 8 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 = (...)です。次に、フィルタリングしたアイテムをchunkを使用して10のグループに分割し、各グループを印刷します。

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

あなたが始めて、1であなたは、印刷するたびに、それを減らすために10に設定したカウンタを持つことができます。 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 
関連する問題