Python 遍历嵌套列表以生成忽略非类型的最小值和最大值
我需要在转置的嵌套列表中查找最小值和最大值,忽略任何none类型 这是我的嵌套列表: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
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