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

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

l1 = [5, 10, 12, 3, 6, 2]
l2 = []
l3 = [6, 9, 11, 5, 4, 4, 8, 7]

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

common = [6, 10, 12, 5, 6, 4, 8, 7]

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

回答

如果它们始终保证为正数,则可以将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]

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

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


以上是在三个或更多不同长度的列表中获取最大值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>