如何比较列表列表中的元素?

Sha*_*ana 2 python list python-zip

我有一个包含元素列表的列表(每个内部列表中的元素数量不相同),我想将同一索引中的所有元素分组到单独的组中并返回每个组中的最大值:例如,

elements = [[89, 213, 317], [106, 191, 314], [87]]
Run Code Online (Sandbox Code Playgroud)

我想像这样对这些元素进行分组,

groups = [[89,106,87],[213,191],[317,314]]
Run Code Online (Sandbox Code Playgroud)

预期结果是组中每个列表的最大值:106,213 和 317

我尝试使用以下代码对元素进行分组:

w = zip(*elements)
result_list = list(w)
print(result_list)
Run Code Online (Sandbox Code Playgroud)

我得到的输出是

[(89, 106, 87)]
Run Code Online (Sandbox Code Playgroud)

And*_*ely 7

你可以用itertools.zip_longestfillvalue=float("-inf")

from itertools import zip_longest

elements = [[89, 213, 317], [106, 191, 314], [87]]

out = [max(t) for t in zip_longest(*elements, fillvalue=float("-inf"))]
print(out)
Run Code Online (Sandbox Code Playgroud)

印刷:

[106, 213, 317]
Run Code Online (Sandbox Code Playgroud)

注意:zip()在这里不起作用,因为(如您所说)每个内部列表中的元素数量不同。与zip_longest()缺少的元素被取代fillvalue,在这种情况下-infinity(并且-infinity将总是在最低值max()函数)