Py学习  »  Python

在Python中,如何在打印时解压缩嵌套列表中的子列表

shankar v • 3 年前 • 1238 次点击  

考虑列表L= [1,2,3,4,5]。
如果我们想解包列表并打印,我们可以使用*操作符解包

l=[1,2,3,4,5]
print(*l,sep="\n")

输出:
1.
2.
3.
4.
5
这是在单一简单列表的情况下。
如果我有嵌套列表,并希望像上面那样解包所有子列表。
考虑子列表SL= [[1,2,3],[4],[5],[6],[7],[8],[9]
如果我在打印语句中输入**,它会抛出一条错误消息。

 sl=[[1,2,3],[4,5,6],[7,8,9]]
 print(**sl,sep="\n")

这不管用。
我希望输出为
1.
2.
3.
4.
5.
6.
7.
8
9

有没有可能在没有循环的情况下解包嵌套列表的子列表

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128581
 
1238 次点击  
文章 [ 3 ]  |  最新文章 3 年前
user2668284 user2668284
Reply   •   1 楼
user2668284 user2668284    3 年前

要获得所需的输出,可以执行以下操作:

sl=[[1,2,3],[4,5,6],[7,8,9]]
print('\n'.join([str(x) for y in sl for x in y]))
dev
Reply   •   2 楼
dev    3 年前

你可以把清单展平,然后把它打开。

l = [[1,2,3],[4,5,6],[7,8,9]]
print(*[elt for sl in l for elt in sl])
I'mahdi
Reply   •   3 楼
I'mahdi    3 年前

你可以用 itertools.chain 如下所示:

>>> from itertools import chain
>>> sl=[[1,2,3],[4,5,6],[7,8,9]]
>>> print(*(chain.from_iterable(sl)),sep="\n")
1
2
3
4
5
6
7
8
9