我有一个嵌套列表,如下所示:
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
第一个,然后在不同的轴上进行最大值和最小值,但所有都不会出现我想要的结果.
您可以使用内置的做到以下几点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)