这应该很简单。
我有一个多维的整数列表,例如:
a = [[5,5,5,4,6],[3,2,6,6,5],[7,2,2,5,6]]
我需要一种方法来返回编号最小的位置的索引列表。在这个例子中,它将是对应于值2的索引,或((1,1),(2,1),(2,2))。
我正在考虑列表理解方法,但我不确定。
答案 0 :(得分: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)]
答案 1 :(得分: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)]
答案 2 :(得分:0)
我不会给你快速的解决方案,因为这是一个简单的编程,但我会说两个嵌套的for
循环和一个变量跟踪最小值及其位置就足够了。为了更加Pythonic,你可以试着让enumerate
开始工作。
答案 3 :(得分: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)]