找出一个多维数组的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点

#找出一个多维数组的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点
list1 = [
    [2,4,6,7],
    [1,3,5,8],
    [4,6,7,9]]    

row_maxlist=[]
column_minlist=[]
for i in range(len(list1)):
    max_row=max(list1[i])
    print('max_row:',max_row)
    for j in range(len(list1[i])):
        if list1[i][j]==max_row:
            row_maxlist.append((i,j))

#把二维列表转置了一下,用同样的方法求各列最小值;然后记录(j,i)
list2=[]
for j in range(len(list1[0])):
    temp=[]
    for i in range(len(list1)):
        temp.append(list1[i][j])
    list2.append(temp)
print(list2)

for i in range(len(list2)):
    min_row=min(list2[i])
    for j in range(len(list2[i])):
        if list2[i][j]==min_row:
            column_minlist.append((j,i))  ##然后记录(j,i)

print('row_maxlist',row_maxlist)
print('column_minlist',column_minlist)
result=set(row_maxlist)&set(column_minlist) ##求交集

print(result)

 

posted @ 2019-01-14 15:37  小金儿  阅读(839)  评论(0编辑  收藏  举报