打印 x 个列表,然后在 python 中插入新行

Print x number of list and then insert new line in python

我有一个这样的整数列表

[1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

我想在一行中打印 10 个整数,然后插入一个新行,这样输出应该如下所示:

[1, 2, 1, 2, 1, 1, 1, 1, 1, 1,

1, 1, 1, 1, 1, 1, 1, 2, 2, 1,

1, 1, 1, 1, 1, 1, 2, 1, 1, 1,

1,1,1,1,1,1,1,1,1,1,

1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

我需要这样做,因为我需要将列表的输出截图到我的论文中,如果列表看起来更整洁就更好了。先谢谢了。

尝试pprint

import pprint
foo = [1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
pp = pprint.PrettyPrinter(width=30, compact=True)
pp.pprint(foo)

结果:

[1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 2, 2, 1,
 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1]

您可以调整宽度和缩进等...

如果您不想使用库,可以使用以下一种方法:

for i in range(len(l)//10+1):
    if i==0:
        k=str(l[i*10:i*10+10])
        k=k[:-1]+','
        print(k)
    elif i==len(l)//10:
        k=str(l[i*10:i*10+10])
        k=k[1:-1]+']'
        print(k)
    else:
        k=str(l[i*10:i*10+10])
        k=k[1:-1]+','
        print(k)

输出:

[1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 2, 2, 1,
1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1]

如果您不想使用任何外部库,这里有一个方法:

print('['+'\n'.join([','.join(map(str, a[i:i+x])) for i in range(0,len(a),x)])+']')

试试这个。我已经严格测试了这个。

n = [1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

i = 0

j = len(n)

j = j - j%10

if len(n)%10==0:
    j -= 10

print(end='[')

while i<j:
    print(*n[i:i+10], sep=',', end=',\n')
    i += 10

print(*n[i:], sep=',', end=']') 

输出:

[1,2,1,2,1,1,1,1,1,1,
1,1,1,1,1,1,1,2,2,1,
1,1,1,1,1,1,2,1,1,1,
1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1]

给出的示例有 67 个元素。我的输出包含 7 行。前 6 行每行 10 个元素,最后一行有 7 个元素。您可以将 10 替换为您想要的任何数字。

我想补充一个答案。它更像 pythonic 和单行代码。

a, x = list(range(10,77)), 5
print('[', *[str(i)+',' if (j+1)%x!=0 else str(i)+',\n' for j, i in enumerate(a[:-1])],sep='',end=str(a[-1])+']')

输出:

[10,11,12,13,14,
15,16,17,18,19,
20,21,22,23,24,
25,26,27,28,29,
30,31,32,33,34,
35,36,37,38,39,
40,41,42,43,44,
45,46,47,48,49,
50,51,52,53,54,
55,56,57,58,59,
60,61,62,63,64,
65,66,67,68,69,
70,71,72,73,74,
75,76]

所以我在玩昨天,但我必须去上班才能完成它。 size 变量可以让你改变长度,并在输出中很好地打印出来。如果您确实需要在输出中添加括号,那应该很容易。

希望这能为您指明正确的方向!

myList = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
size = 5  # Number Per Row
startIndex = 0 # Start at the beginning index of myList

try:
    for x in range(len(myList)):
        for y in range(size):
            if startIndex >= len(myList):
                break
            print(myList[startIndex], end=" ")
            startIndex = startIndex + 1
        print()
        if startIndex >= len(myList):
            break
except IndexError:
    print("\nIndex Error")  # Left this in for debugging purposes