Python垂直并排灵活打印多个列表

0 投票
1 回答
1152 浏览
提问于 2025-04-18 12:24

我刚开始学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_1list_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。这种写法允许你向一个函数传递任意数量的参数。

撰写回答