类型一:数组的索引
1.若索引的元素唯一,则利用l.index(target)即可。l为所给数组,target为查找的目标值。
l=[1,2,36,89,45,36,11]
print(l.index(89))
output: 3
需要注意的是,如果索引的值不在数组中,则程序报错。
index()函数是从数组左边开始查找。
当索引的元素不唯一时,该方法只返回找到的第一个元素的索引,下面介绍
2.若索引的元素不唯一,利用enumerate函数。
l=[1,2,36,89,45,36,11]
print(l.index(36))
output: 2
print([i for i ,x in enumerate(l) if x==36])
output: [2,6]
enumerate()函数数组中的元素变为元组,即变为(index,value),利用循环找出所有值即可。
类型二:字符串的索引
1.利用l.find(target)
除了上述说讲的方法外,还有find()函数,用法与index一样,区别就是当查找元素不存在是,find()函数返回-1。
字符串查找中还延伸了几个函数,index()和find()都是从头开始找,返回第一个找到元素,而rindex()和rfind()都是从末尾开始找,返回第一个找到元素。
类型三:二维的索引
1.查找的元素唯一
divmod()函数
divmod()函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
divmod(7, 2)
output: (3, 1)
利用这个特性,我们可以进行以下计算:
a=[[1,2,3],[4,5,6],[7,8,9]]
divmod(sum(a, []).index(6), 3)
output: (1, 2)
其中,sum(a, [])的作用是将列表展开,并利用index()函数找出索引,最后用divmod()函数返回行列的索引,3为二维数组的行数:
sum(a, [])
output: [1, 2, 3, 4, 5, 6, 7, 8, 6]
2.查找的元素不唯一
可以通过遍历查找
a=[[1,2,3],[4,5,6],[7,8,6]]
[(i,j) for i in range(len(a)) for j in range(len(a[0])) if a[i][j]==6]
output: [(1, 2), (2, 2)]