繁体   English   中英

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

[英]How to print list elements (which are also lists) in separated lines in Python

我已经检查了Python上单独行上的SO post 打印列表元素上的帖子和答案,而我认为我的问题是另外一个问题。

我想要的是进行转换:

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()中打印,但是都失败了。

这是对相同想法的改编:

output = "[" + ",\n".join(str(i) for i in lsts) + "]"
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]

尝试这个:

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

如果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], [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]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM