我正在尝试打印出一个列表,并且对于每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]
.......
我怎么能这样做?
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循环:
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。