如何在Python中以单独的行打印列表元素(也是列表)

时间:2016-04-08 02:54:55

标签: python list

我在SO Printing list elements on separated lines in 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()但都失败了。

5 个答案:

答案 0 :(得分:0)

以下是对同一想法的改编:

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

答案 1 :(得分:0)

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]

答案 2 :(得分:0)

试试这个:

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]]

答案 3 :(得分:0)

如果修复了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]]  

答案 4 :(得分:0)

为了达到您想要的效果,您可以像已建议的那样手动展开并打印外部数组:

>>> 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]]
相关问题