如何在Python中返回多维数组的最小值/最大值?

7 投票
5 回答
19437 浏览
提问于 2025-04-17 08:31

我有一个列表,格式是这样的:

[ [[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

撰写回答