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