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

时间:2017-12-05 12:55:33

标签: python list

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

person

我需要找到嵌套列表转置的最小值和最大值,以便min的结果为:

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 ,然后在不同的轴上执行最大值和最小值,但所有结果都没有出现。

3 个答案:

答案 0 :(得分:7)

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

min_x = list(map(min, zip(*x)))
max_x = list(map(max, zip(*x)))

或者正如Chris_Rands所指出的,这个缩短的形式也会起作用:

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)])

答案 1 :(得分:1)

您可以使用列表推导或其他方式:

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

与:

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

输出:

[1, 5, 2, 4]

最多:

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

与:

相同
max_list=[]
for i in zip(*x):
    max_list.append(max(i))

print(max_list)

输出:

[9, 10, 7, 12]

答案 2 :(得分:1)

只需使用 Darkened Code 模块:

root