【问题标题】:I have a list, that I need to print out 10 items on every new line?我有一个清单,我需要在每一行打印出 10 个项目?
【发布时间】:2018-06-03 23:46:56
【问题描述】:

巨型列表我需要每 10 个项目在新行上打印一次,而不是我写

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]     

示例输出:

>>> 1,2,3,4,5,6,7,8,9
>>> 10,11,12,13,14,15,16,17,18,19
>>> 20,21,23,24,25,26,27,28,29

怎么写成一行?

【问题讨论】:

  • @D.Vidal for a in range(0,19):为什么不呢?
  • 添加了一些示例输出

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


【解决方案1】:

你可以这样做:

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

【讨论】:

  • 如此简单,我喜欢它!
  • 我不确定 * 在那里做什么
  • 如果您希望每 10 个项目打印一次,您会怎么做?
【解决方案2】:

我会使用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

【讨论】:

    【解决方案3】:

    我解释您的问题的方式是您希望每行有 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=" ")
    

    【讨论】:

      【解决方案4】:

      我觉得比弗朗西斯科的回答清楚一点:

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

      【讨论】:

      • 恕我直言@Francisco 的回答非常明确且非常pythonic。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多