Python 通过嵌套列表中元素的索引查找嵌套列表的最小值和最大值

Python 通过嵌套列表中元素的索引查找嵌套列表的最小值和最大值,python,list,Python,List,我有一个嵌套列表,如下所示: x = [[1, 5, 3, 4], [5, 10, 7, 8], [9, 9, 2, 12]] 我需要查找嵌套列表的最小值和最大值转置,以使最小值的结果为: 1, 5, 2, 4 # 1 is the min of first column (1, 5, 9) a.s.o 最大值应为: 9, 10, 7, 12 我尝试先将其转换为数据帧,然后在不同的轴上执行max和min操作,但没有得到我想要的结果。您可以使用内置函数和zi

我有一个嵌套列表,如下所示:

x = [[1,  5, 3,  4], 
     [5, 10, 7,  8], 
     [9,  9, 2, 12]]
我需要查找嵌套列表的最小值和最大值转置,以使最小值的结果为:

1, 5, 2, 4  # 1 is the min of first column (1, 5, 9) a.s.o
最大值应为:

9, 10, 7, 12

我尝试先将其转换为数据帧,然后在不同的轴上执行max和min操作,但没有得到我想要的结果。

您可以使用内置函数和
zip(*…)
转换模式执行以下操作:

min_x = list(map(min, zip(*x)))
max_x = list(map(max, zip(*x)))
或者正如作者所指出的,这种缩写形式也适用于:

min_x = list(map(min, *x))
max_x = list(map(max, *x))
或使用理解:

min_x = [min(col) for col in zip(*x)]
max_x = [max(col) for col in zip(*x)]
如果你非常想做一行:

min_x, max_x = zip(*[(min(col), max(col)) for col in zip(*x)])

您可以使用列表理解或其他方式:

print([min(item) for item in zip(*x)])
同:

min_list=[]
for i in zip(*x):
    min_list.append(min(i))
print(min_list)
max_list=[]
for i in zip(*x):
    max_list.append(max(i))

print(max_list)
输出:

[1, 5, 2, 4]
[9, 10, 7, 12]
对于max:

print([max(item) for item in zip(*x)])
同:

min_list=[]
for i in zip(*x):
    min_list.append(min(i))
print(min_list)
max_list=[]
for i in zip(*x):
    max_list.append(max(i))

print(max_list)
输出:

[1, 5, 2, 4]
[9, 10, 7, 12]

只需使用
numpy
模块:

import numpy as np

x = np.array([[1,  5, 3,  4], [5, 10, 7,  8], [9,  9, 2, 12]])
print(np.min(x, 0))    # [1 5 2 4]
print(np.max(x, 0))    # [ 9 10  7 12]

4
是从哪里来的
min
?对于
max
,对于
9
7
也是一样的?当嵌套列表只有3个时,为什么结果中有4个值?
z=[min(i)for i in x]
给出了包含所有最小值的列表,而
z=[max(i)for i in x]
则给出了相反的结果<代码>列表(map(min,*x))90%的时候,一个问题最难的部分是理解它;不是真正的编码困难。。干得好+1.