Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按特定顺序在一组子发布者中查找最大值_Python_List - Fatal编程技术网

Python 按特定顺序在一组子发布者中查找最大值

Python 按特定顺序在一组子发布者中查找最大值,python,list,Python,List,我有以下清单: L=[ [ [4.0, 4.0] , [1.0, 2.0, 3.0] ], [ [4.0, 5.0] , [1.0 ] ] ] 我需要得到子列表中每个“列”的最大值。换句话说,我必须得到: result=[5.0, 3.0] …因为5.0是子发布者第一个“列”中的最大值: [4.0, 4.0] [4.0, 5.0] [1.0, 2.0, 3.0] [1.0] …和3.0是子发布者第二列中的最大值: [4.0, 4.0] [4.0, 5.0] [1.0,

我有以下清单:

L=[
[ [4.0, 4.0] , [1.0, 2.0, 3.0] ],
[ [4.0, 5.0] , [1.0          ] ]
]
我需要得到子列表中每个“列”的最大值。换句话说,我必须得到:

result=[5.0, 3.0]
…因为5.0是子发布者第一个“列”中的最大值:

[4.0, 4.0]
[4.0, 5.0]
[1.0, 2.0, 3.0]
[1.0]
…和3.0是子发布者第二列中的最大值:

[4.0, 4.0]
[4.0, 5.0]
[1.0, 2.0, 3.0]
[1.0]
子列表的数量可能会改变,子发布者的数量和子发布者内部的值也可能会改变。我已经尝试了几个小时,但我只能在subpublist的第一个值中迭代,因此我缺少位于其各自subpublist末尾的最大值:-提前感谢

注:不幸的是,我不能使用熊猫或Numpy

您可以使用zip

输出:

[5.0, 3.0]
您可以使用:

In [140]: import itertools as it

In [141]: [max(max(g) for g in e if g) for e in it.zip_longest(*L)]
Out[141]: [5.0, 3.0]
使用functools.partial的丑陋解决方案:

这里,mappartialmap,max,L通过选取每个单元格的最大值来变换每一行;zip执行转置;另一个mapmax。。。查找每列的最大值

不那么丑陋的解决方案:

c1 = c2 = 0
for col1, col2 in L:
    c1 = max(c1, *col1)
    c2 = max(c2, *col2)
# c1 = 5; c2 = 3

非常感谢,@Ajax1234它工作得非常好!谢谢@Victor如果子发布者的数量不相等,此解决方案将不起作用。@非常感谢您的建议,我目前正在我的程序中进行一些测试。显然,即使在子列表中有不同数量的子发布者,它也可以正常工作。。。不确定这是否是因为在不对称子列表的情况下,我会在之后用零填充。。。但我肯定会继续尝试,这一个和你的一样。非常感谢。你们是救生员@维克多很乐意帮忙!非常感谢,@Yakym Pirozhenko我也喜欢这个解决方案。谢谢非常感谢你的回答!!下一次我会尽量记住itertools!谢谢@百合香