在三个或更多不同长度的列表中获取最大值

Mic*_* O. 0 python loops dataframe

我需要使用 Python 的xlsxwriter. 为此,我准备了三个数据框列中最大文本长度的列表。

l1 = [5, 10, 12, 3, 6, 2]
l2 = []
l3 = [6, 9, 11, 5, 4, 4, 8, 7]
Run Code Online (Sandbox Code Playgroud)

我需要获取这些列表中的最大值,以便结果列表如下所示:

common = [6, 10, 12, 5, 6, 4, 8, 7]
Run Code Online (Sandbox Code Playgroud)

我知道我应该在这里写我自己的解决方案,但这很简单:我们应该找到最大长度的列表,然后将每个值与其他列表进行比较,如果它的长度允许的话。但是有没有更优化的方法呢?

Sel*_*cuk 6

如果它们始终保证为正数,则可以将zip_longest它们0用作fillvalue

>>> from itertools import zip_longest
>>> list(map(max, zip_longest(l1, l2, l3, fillvalue=0)))
[6, 10, 12, 5, 6, 4, 8, 7]
Run Code Online (Sandbox Code Playgroud)

如果也可以有负数,则可以使用负无穷大代替0

>>> from math import inf
>>> list(map(max, zip_longest(l1, l2, l3, fillvalue=-inf)))
[6, 10, 12, 5, 6, 4, 8, 7]
Run Code Online (Sandbox Code Playgroud)