Python 遍历嵌套列表以生成忽略非类型的最小值和最大值

Python 遍历嵌套列表以生成忽略非类型的最小值和最大值,python,nested-lists,Python,Nested Lists,我需要在转置的嵌套列表中查找最小值和最大值,忽略任何none类型 这是我的嵌套列表: x=[[1,20,50], [5, 6, 7], [11, 42, 2], [7,32,无]] 我希望忽略第三列中的None,并希望得到以下输出: min [1, 6, 2] max [11,42,50] 我需要使用标准python库来执行此操作纯python解决方案: In [16]: x = [[1, 20, 50], ...: [5, 6, 7], ...: [1

我需要在转置的嵌套列表中查找最小值和最大值,忽略任何none类型

这是我的嵌套列表:

x=[[1,20,50],
[5, 6, 7],
[11, 42, 2],
[7,32,无]]
我希望忽略第三列中的None,并希望得到以下输出:

min
[1, 6, 2]

max
[11,42,50]
我需要使用标准python库来执行此操作

纯python解决方案:

In [16]: x = [[1, 20, 50],
    ...:      [5, 6, 7],
    ...:      [11, 42, 2],
    ...:      [7, 32, None]]
    ...:

In [17]: [min((y for y in x if y is not None), default=None) for x in zip(*x)]
Out[17]: [1, 6, 2]

In [18]: [max((y for y in x if y is not None), default=None) for x in zip(*x)]
Out[18]: [11, 42, 50]
请注意,对于
[[None]]
,上面的代码返回
[None]
,因为既没有最小元素也没有最大元素。如果希望此代码引发异常,只需删除
default=None
。如果要从结果列表中排除
None
,只需使用类似
[z代表z in(…),如果z不是None]


Numpy解决方案,通过将“强制转换为浮点”自动将“无”转换为“nan”:

In [12]: import numpy as np

In [13]: a = np.array(
    ...:     [[1, 20, 50],
    ...:      [5, 6, 7],
    ...:      [11, 42, 2],
    ...:      [7, 32, None]],
    ...:     dtype=np.float)
    ...:

In [14]: np.nanmin(a, axis=0).astype(np.int)
Out[14]: array([1, 6, 2])

In [15]: np.nanmax(a, axis=0).astype(np.int)
Out[15]: array([11, 42, 50])

到目前为止,您尝试了什么?我的想法是使用如下内容:min_x=[min(col)for col in zip(*list)],但我得到了一个类型错误。如果我创建了一个新的嵌套列表,并删除了None,那么我无法找到一种方法来找到最后一列的最小/最大值,并在获取
min
s之前从每一列中删除
None
s