使用'in'关键字在列表中查找元素并返回该元素

时间:2012-05-16 20:27:20

标签: python arrays

使用'in'关键字,我可以找到元素是否在数组中:

a=[1,2,3]
if 1 in a:
    print "1 present in a"

有没有办法返回找到该元素的'in'的索引?

2 个答案:

答案 0 :(得分:4)

1-d列表:

  a=[1,2,3]
    def indd(val):
     try:   
       ind=a.index(val)
       return ind,val
     except:
       return 'not found'  

    print(indd(1))  
    print(indd(5))   

    (0,1)
    not found

对于3-d列表,函数函数将返回x,y,z的元组,如果在3d列表中重复该数字,则它将返回最低索引: < / p>

def ind_3d(lis,val):
    ind=[(j,i,k) for j,x in enumerate(lis) for i,y in enumerate(x) for k,z in enumerate(y) if z==val]
    if len(ind)==0:
        return 'not found'
    else:
        return ind[0]

a=[[[1,2,3],[4,5,6],[7,8,9]],[[11,12,13],[14,15,16],[17,18,19]]]

print(ind_3d(a,11))
print(ind_3d(a,5))
print(ind_3d(a,25))

<强>输出:

(1, 0, 0)
(0, 1, 1)
not found

答案 1 :(得分:1)

如果您知道肯定存在,请使用a.index(1)获取列表中1的位置。否则使用try / catch块。

此外,它们在Python中被称为“列表”:)使用术语越准确,以后就越容易跟踪它们的实现方式以及它们支持的功能。

编辑:对于多维列表(例如2-D情况下的列表列表),您必须迭代n-1级别,n级别1 1}}是维度。对于二维,假设您正在搜索for idx, val in enumerate(a): if 1 in val: return idx, val.index(1) ,这样的内容将起作用:

{{1}}