如何在python上每行仅打印10个项目。例如,使用以下代码行:
for index, item in enumerate (list1):
if item == 'P':
print (index, end=' ')
我得到的结果是水平打印,而不是垂直打印" 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 :(得分: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
答案 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组,然后打印每个组。
答案 2 :(得分: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))
答案 3 :(得分: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)
答案 4 :(得分: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