如何在Python中以分隔行打印列表元素(也是列表)



我已经检查了SO post上的帖子和答案在Python中用分隔行打印列表元素,但我认为我的问题不同。

我想要的是转型:

lsts = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]

输出如下:

[[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
[1, 4, 6, 4, 1]]

我尝试在for循环中附加、打印和"\n".join(),但全部失败。

要实现您想要的目标,您可以手动展开并打印外部数组,如已建议的:

>>> lsts = [[1], [2,3], [4, 5, 6]]
>>> print("[" + ",n".join(str(i) for i in lsts) + "]")
[[1],
[2, 3],
[4, 5, 6]]

不完全是您所要求的,但是json.dumps可以通过指定indent:来进行一些漂亮的打印

>>> print(json.dumps(lsts, indent=4))
[
    [
        1
    ],
    [
        2,
        3
    ],
    [
        4,
        5,
        6
    ]
]

还有pprint,它旨在为人类提供某种智能打印:

>>> pprint(lsts, width=20)
[[1],
 [2, 3],
 [4, 5, 6]]

如果lsts的形式是固定的,您可以尝试:

>>> print '['+'n'.join([ str(i) for i in lsts ]) + ']'  
[[1]  
[1, 1]  
[1, 2, 1]  
[1, 3, 3, 1]  
[1, 4, 6, 4, 1]]  

试试这个:

lsts = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
print('[',end='')
for i,value in enumerate(lsts):
    print(value,end='')
    if i == len(lsts)-1:
        print(']')
    else:
        print(',')

输出:

[[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
[1, 4, 6, 4, 1]]
print ']n'.join(str(lsts).split('],'))

这很恶心,但你想怎么做就怎么做。

for l in lsts:
    print l

几乎做到了,只是你错过了第一个和最后一个括号。所以你可以做

list_len = len(lsts)
for i in range(list_len):
    if i == 0:
        print '['+str(lsts[i])
    elif i == list_len - 1:
        print str(lsts[i]( +']'
    else:
        print lists[i]

这是对相同想法的改编:

output = "[" + ",n".join(str(i) for i in lsts) + "]"

最新更新