【问题标题】:How to print every nth index of a python list on a new line?如何在新行上打印python列表的每个第n个索引?
【发布时间】:2019-06-15 12:55:48
【问题描述】:

我正在尝试打印一个列表,并且对于每 5 个索引,它会打印一个新行。例如,如果我有:

  [1,2,3,4,5,6,7,8,9,10]

输出将是:

  1 2 3 4 5
  6 7 8 9 10

到目前为止我已经试过了:

   lst = [1,2,3,4,5,6,7,8,9,10]

   for i in lst:
       if len(lst) > 5:
          print(lst,'\n')

但我得到的只是:

   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

   .......

我该怎么做?

感谢您的帮助!

【问题讨论】:

  • 如果len(list) 不能被您的索引整除,您的输出是什么?

标签: python list printing split


【解决方案1】:

使用了带步骤的 for 循环:

n_indices = 5
lst = [1,2,3,4,5,6,7,8,9,10]

for i in range(0, len(lst), n_indices):
    print(lst[i:i+n_indices])

>>>[1, 2, 3, 4, 5]
>>>[6, 7, 8, 9, 10]

如果你想对格式更感兴趣,你可以像这样使用参数解包:print(*list[i:i+n_indices]) 并以这种格式获得输出:

1 2 3 4 5
6 7 8 9 10

【讨论】:

  • 我猜他只想要一个格式化输出 .join: print(' '.join(lst[i:i+indices]) ... 对他有好处:)
【解决方案2】:

试试这个:

a = [1,2,3,4,5,6,7,8,9,10]
for i in [a[c:c+5] for c in range(0,len(a),5) if c%5 == 0]:
    print(*i)

输出将是:

1 2 3 4 5
6 7 8 9 10

您也可以将5 替换为任何其他数字或变量。

【讨论】:

  • 嗨,您介意我在答案中使用*i 参数解包格式吗?比我现在的" ".join()好多了
  • @Primusa 当然可以,我也会投票赞成你的答案。
  • 没问题@Primusa,我认为如果你在print 函数中查看sep= 也很好。这很好。像这样print(*i, sep='-') 会打印:1-2-3-4-5
【解决方案3】:

比其他答案更惯用:

n = 5
lst = [1,2,3,4,5,6,7,8,9,10]

for group in zip(*[iter(lst)] * n):
    print(*group)

1 2 3 4 5
6 7 8 9 10

对于更大的列表,它也更快:

In [1]: lst = range(1, 10001)

In [2]: n = 5

In [3]: %%timeit
    ...: for group in zip(*[iter(lst)] * n):
    ...:     group
    ...:
236 µs ± 49.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [4]: %%timeit
    ...: for i in range(0, len(lst), n):
    ...:     lst[i:i+n]
    ...:
1.32 ms ± 184 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

【讨论】:

    【解决方案4】:

    您可以使用以下代码:

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    for i in range(0, len(a), 5):
        print(" ".join(map(str, a[i:i+5])))
    

    它会给你想要的输出:

    1 2 3 4 5
    6 7 8 9 10
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多