Python垂直并排灵活打印多个列表
我刚开始学Python,想把几个列表垂直并排打印出来,比如说有一个 list_1 = [1,2,3]
和一个 list_2 = [4,5]
:
输出结果是:
1 4
2 5
3 None
我发现 map(None, list_1, list_2)
可以做到这一点。
不过,我可能有超过10个列表需要垂直打印。我在想有没有什么简单的方法可以做到这一点。
1 个回答
0
你可以使用 map(None, list_1, list_2, list_3, ...)
,因为 map
可以接受任意数量的参数。
不过,通常不建议使用带数字的变量名。这往往意味着你应该使用 list
(列表)或 tuple
(元组)来代替。所以与其有变量 list_1
到 list_10
,不如用一个变量 columns
,它是一个包含多个列表的列表。
如果 columns = [list_1, list_2]
,那么
import itertools as IT
rows = IT.izip_longest(*columns)
就等同于 map(None, list_1, list_2)
,并且与 Python3 兼容,因为 Python3 去掉了 map(None, ...)
这个选项。注意,这种写法可以很好地扩展到任意数量的列表,而不需要你手动输入所有那些变量名。
在 IT.izip_longest(*columns, ...)
中的 *
是 Python 的解包操作符。它会把 columns
中的项目拆开,然后将这些项目作为单独的参数传递给 IT.izip
。这种写法允许你向一个函数传递任意数量的参数。