我有一个如下所示的嵌套列表:
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
,然后在不同的轴上执行最大值和最小值,但所有结果都没有出现。
答案 0 :(得分:7)
您可以使用内置的map
,min
,max
函数和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