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

A11*_*122 3 python list

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

x = [[1,  5, 3,  4], 
     [5, 10, 7,  8], 
     [9,  9, 2, 12]]
Run Code Online (Sandbox Code Playgroud)

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

1, 5, 2, 4  # 1 is the min of first column (1, 5, 9) a.s.o
Run Code Online (Sandbox Code Playgroud)

最大值应该是:

9, 10, 7, 12
Run Code Online (Sandbox Code Playgroud)

我尝试将它转换为dataframe第一个,然后在不同的轴上进行最大值和最小值,但所有都不会出现我想要的结果.

sch*_*ggl 7

您可以使用内置的做到以下几点map,min,max功能和zip(*...)transpositioning模式:

min_x = list(map(min, zip(*x)))
max_x = list(map(max, zip(*x)))
Run Code Online (Sandbox Code Playgroud)

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

min_x = list(map(min, *x))
max_x = list(map(max, *x))
Run Code Online (Sandbox Code Playgroud)

或使用理解:

min_x = [min(col) for col in zip(*x)]
max_x = [max(col) for col in zip(*x)]
Run Code Online (Sandbox Code Playgroud)

如果你拼命想要一行:

min_x, max_x = zip(*[(min(col), max(col)) for col in zip(*x)])
Run Code Online (Sandbox Code Playgroud)

  • 90%的时间,关于问题最困难的部分是理解它; 不是实际的编码困难..干得好!+1 (2认同)