我有一个列表,我需要在每个新行上打印出10个项目吗?

时间:2018-06-03 23:46:57

标签: python python-3.x list for-loop range

巨人名单我需要在一个新行上打印每10个项目,而不是我写

zip -z valid.zip somefile.txt

示例输入:

for a in range(0, 9):
    print(myList[a])

for b in range(10, 19):
    print(myList[b])

示例输出:

myList = [1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,171,8,19,20,21,22]
for a in range(0, 9):
    print(myList[a])

for b in range(10, 19):
    print(myList[b])

for c in range(20, 29):
    print(myList[c]     

我怎么能把它写在一行?

4 个答案:

答案 0 :(得分:3)

您可以这样做:

for i in range(0, len(myList), 10):
    print(*myList[i:i+10])

答案 1 :(得分:1)

我会使用zip聚类来对可迭代的元素进行分组。这种方法允许您在不可切片的迭代物上使用它,如生成器。

from itertools import zip_longest

def print_n_on_each_line(iterable, n):
    for line in zip_longest(*[iter(iterable)]*n, fillvalue=''):
        print(*line)

a = [1, 2, 3, 4 ,5]
print_n_on_each_line(a, 2)

打印

1 2
3 4
5

答案 2 :(得分:0)

我解释你的问题的方式是你想要每行10个项目。

item1, item2, item3 ... item10
item11, item12, item13 ... item20

如果是这种情况,我可能会建议您查看mod operator

for i in range(len(myList)):
    if i !=0 and i%10 == 0:
        print()
    print(myList[i], end=" ")

答案 3 :(得分:-2)

我认为比弗朗西斯科斯回答的更清楚一点:

for i, e in enumerate(myList):
    newline = (i+1)%10 == 0
    print(e, end='\n' if newline else '') # or ', ', or whatever else