如何获得m-n维数组/列表的列索引?

嗨,
需要在列表a[]的每一行中找到最小元素值。如果行的元素等于最小值,我想获取它的列索引并放入另一个列表b[]。
示例:
A[0]=[1,2,3,6,1]
A[1]=[2,3,4,2,5]
A[2]=[3,4,7,3,3]
行a[0]中的最小值为1。a[0][0]和a[0][4]的元素等于1。因此b=[0,4]
但是如何获得列的索引呢?我尝试并得到错误"'int'对象没有属性'index'"。
这就是我所做的。有没有人请帮帮忙。

选择 | 换行 | 行号
  1. a=[[0 for i in range(5)]for j in range(3)]
  2. b=[0 for i in range(10)]
  3.  
  4. a[0]=[1,2,3,6,1]
  5. a[1]=[2,3,4,2,5]
  6. a[2]=[3,4,7,3,3]
  7.  
  8. for i in range(3):
  9.     x=min(a[i])
  10.     for j in range(5):
  11.         if(a[i][j]==x):
  12.             y=a[i][j].index(x)
  13.             b[j]=y
# 回答1


可以使用内置函数获取列表中的最小值
分钟()
。列表中某一项的索引号可以用列表的方法得到
索引()
。所以:

选择 | 换行 | 行号
  1. >>> [8,6,3,9,2].index(min([8,6,3,9,2]))
  2. 4
  3. >>> 
# 回答2


使用您的原始代码,j是索引(
解释的清单
)。请注意,如果最小值在列表中存在多次,这将打印多个查找结果。请不要将"I"、"l"或"O"用作单个数字名称,因为它们可能看起来像数字。

选择 | 换行 | 行号
  1. a=[]
  2. a.append([1,2,3,6,1])
  3. a.append([2,3,4,2,5])
  4. a.append([3,4,7,3,3])
  5.  
  6. b = []
  7. for ctr in range(len(a)):
  8.     this_list = a[ctr]
  9.     x=min(this_list)
  10.     print "\nnew minimum =", x, this_list
  11.     for j in range(len(this_list)):
  12.         if(this_list[j]==x):
  13.             print "found at %d,  x=%d --> %d" % (j, x, this_list[j])
  14.             b.append([ctr, j])
  15. print b 

标签: python

添加新评论