多行打印一个大列表

Printing a large list in multiple lines

有没有好的方法可以多行打印一个大列表?假设一个列表有 10000 个元素,并且通过将其写入文件,它全部在一行中,这对于文本编辑器来说很难打开它。

我知道我可以用计数器遍历大小并在每 1000 个元素后打印 \n。例如:

my_list = [0,1,2,3,4,5,6,7,8,9]
x = 0
for i in my_list:
    if x % 5 == 0:
        print()
    print(i, end='')
    x += 1

打印

01234
56789

我想知道是否有一个 Python 函数可以更有效地做到这一点。

您可以分块遍历列表并将每个块打印到文件中:

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
chunk_size = 3
with open('myfile.txt', 'w') as f:
    for i in range(0, len(my_list), chunk_size):
        chunk = my_list[i:i+chunk_size]
        print(*chunk, file=f)

这导致文件内容

0 1 2
3 4 5
6 7 8
9

您可以更改 print() 行以根据您的喜好格式化输出。例如删除数字之间的空格,使用 print(*chunk, sep='', file=f).

就代码行数而言,很难击败它:

chunk_size = 10
result = '\n'.join(str(my_list)[i:i+chunk_size] for i in range(0, len(str(a)), chunk_size))
print(result)

请注意,这仍然会打印逗号。

查看您尝试的解决方案:

my_list = [0,1,2,3,4,5,6,7,8,9]
x = 0
for i in my_list:
    if x % 5 == 0:
        print()
    print(i, end='')
    x += 1

可以使用 enumerate 进行改进:

my_list = [0,1,2,3,4,5,6,7,8,9]

for x, i in enumerate(my_list):
    if x % 5 == 0:
        print()
    print(i, end='')

请注意,使用“i”表示此处的项目并使用“x”表示索引是非常粗暴的,因为“i”通常是索引

其实连x%5都可以用三元表达式拉到打印语句中:

for x, i in enumerate(my_list):
    print(i, end='\n' if x%5==0 else '')