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