在三个或更多不同长度的列表中获取最大值
我需要使用 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]