簡體   English   中英

如何在新行上打印python列表的第n個索引?

[英]How to print every nth index of a python list on a new line?

我正在嘗試打印一個列表,並且每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] 

   .......

我該怎么辦?

謝謝您的幫助!

在步驟中使用了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

嘗試這個:

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

比其他答案更慣用:

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)

您可以使用以下代碼:-

for i in range(0,len(a),5):
    print(" ".join(map(str, a[i:i+5])))

它將為您提供所需的輸出。

代碼片段

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM