如何在Python中返回多维数组的最小值/最大值?
我有一个列表,格式是这样的:
[ [[a,b,c],[d,e,f]] , [[a,b,c],[d,e,f]] , [[a,b,c],[d,e,f]] ... ] etc.
我想找出最小的c值和最大的c+f值。这样做可以吗?
5 个回答
1
当然这是可能的。你有一个列表,这个列表里面又包含了很多二元素的列表,而这些二元素的列表实际上也是列表。你的基本算法是
for each of the pairs
if c is less than minimum c so far
make minimum c so far be c
if (c+f) is greater than max c+f so far
make max c+f so far be (c+f)
5
列表推导式来帮忙
a=[[[1,2,3],[4,5,6]], [[2,3,4],[4,5,6]]]
>>> min([x[0][2] for x in a])
3
>>> max([x[0][2]+ x[1][2] for x in a])
10
16
关于最小的 c
:
min(c for (a,b,c),(d,e,f) in your_list)
关于最大的 c+f
:
max(c+f for (a,b,c),(d,e,f) in your_list)
举个例子:
>>> your_list = [[[1,2,3],[4,5,6]], [[0,1,2],[3,4,5]], [[2,3,4],[5,6,7]]]
>>> min(c for (a,b,c),(d,e,f) in lst)
2
>>> max(c+f for (a,b,c),(d,e,f) in lst)
11