0

这应该很简单。

我有一个多维整数列表,例如:

a = [[5,5,5,4,6],[3,2,6,6,5],[7,2,2,5,6]]

我需要一种方法来返回编号最低的位置的索引列表。在此示例中,它将是与值 2 或 ((1,1),(2,1),(2,2)) 对应的索引。

我正在考虑一种列表理解方法,但我不确定。

4

4 回答 4

2

是的,您可以使用列表理解:

>>> a = [[5,5,5,4,6],[3,2,6,6,5],[7,2,2,5,6]]

>>> minn = min(min(x) for x in a) #find the min value

>>> [(i,j) for i,x in enumerate(a) for j,y in enumerate(x) if y==minn]
[(1, 1), (2, 1), (2, 2)]
于 2013-05-08T08:51:44.513 回答
0
aa = [[5,5,5,4,6],[3,2,6,6,5],[7,2,2,5,6]]    
min_ = min(i for a in aa for i in a)
[(i,j) for i,a in enumerate(aa) for j,b in enumerate(a) if b == min_]

[(1, 1), (2, 1), (2, 2)]
于 2013-05-08T09:09:15.420 回答
0
>>> a = [[5,5,5,4,6],[3,2,6,6,5],[7,2,2,5,6]]
>>> res = []
>>> smallest = float('inf')
>>> for i, x in enumerate(a):
        for j, y in enumerate(x):
            if y < smallest:
                smallest = y
                res = [(i, j)]
            elif y == smallest:
                res.append((i, j))


>>> res
[(1, 1), (2, 1), (2, 2)]
于 2013-05-08T08:52:58.663 回答
0

我不会给你快速的解决方案,因为这是一个简单的编程练习,但我会说两个嵌套for循环和一个变量跟踪最小值及其位置就足够了。为了更加 Pythonic,您可以尝试投入enumerate工作。

于 2013-05-08T08:54:49.997 回答