如何在新行上打印python列表的每n个索引?
我试着打印出一个列表,每5个索引,它就会打印一行。例如,如果我有:如何在新行上打印python列表的每n个索引?,python,list,printing,split,Python,List,Printing,Split,我试着打印出一个列表,每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
到目前为止,我试过:
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_index])
并以这种格式获得输出:
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)
对于较大的列表,它也要快得多:
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)
您可以使用以下代码:
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])))
它将为您提供所需的输出:
12345
6 7 8 9 10
您好,您介意我在回答中使用*I
参数unpackaging进行格式设置吗?它比当前的”好多了。join()
我得走了on@Primusa当然可以,我也会投票支持你的答案。没问题@Primusa,我认为如果你也看看print
函数中的sep=
,那就好了。这很好。像这样的print(*i,sep='-')
它会打印:1-2-3-4-5
我想他只想要格式化的输出。join:print(''.join(lst[i:i+index])…对他有好处:)如果len(list)
不能被你的索引整除,你的输出是什么?
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])))