根据python list的index()方法,自己写一个find_index()方法找到所有匹配的index

Oria ·
更新时间:2024-11-15
· 679 次阅读

简单介绍下python的*index()*方法:
查找参数是否在list、tuple等内部,若存在返回第一个index,不存在会报ValueError。 name = ["a", "ying", "de", "san", "shi", "san"] print(name.index("san"))

显示结果为3而不是5,因为"san"第一次出现在列表index为3的地方。

若不存在,比如你输入参数为"fuck",它会报ValueError。

Traceback (most recent call last): File "C:\Users\阿莹的三石\Desktop\test.py", line 2, in print(name.index("fuck")) ValueError: 'fuck' is not in list 可以使用try except来避免退出 try: print(name.index("fuck")) except ValueError: print("can not find member index")

由于try内部发生错误,会去执行except内部代码,程序会继续运行。

编写自己的*find_index()*方法: def find_index(src_list, target): """在给定集合中寻找目标所在索引""" #用来存储目标索引的列表 dst_index_list = [] #在给定集合中挨个比对,若与目标匹配,保留索引 for index in range(len(src_list)): if (src_list[index] == target): dst_index_list.append(index) #返回目标索引列表 return dst_index_list name = ["a", "ying", "de", "san", "shi", "san"] #调用函数,并将返回结果保存到列表中 name_san_index_list = find_index(name, "san") #要对目标进行什么操作,这里仅仅是打印一下 if (len(name_san_index_list) == 0): print("can not found member in list") else: print("find index in list") print(str(name_san_index_list).rstrip("]").lstrip("["))

结果如下返回后将结果使用字符串格式打印出来,并去掉列表两边中括号:

find index in list 3, 5

实现方法很简单,就是一个一个比对,如果比对成功就记录索引,最后将记录的索引返回供后续使用,如果不存在也不会退出程序。本文只是将匹配到的打印一下,实际上可以全部替换为另一个字符串等等。

注意不要在find_index()内部修改原列表,默认传递是引用,内部修改了外边的列表也会改变。引用、指针什么的请参考
c语言,个人感觉c语言还是牛逼的,毕竟除了嵌入式啥的以外造轮子很强。

肯定还有许多其他简单的方法,python应该已经有这样的内置方法了,但是我懒得去找了,我就是看到书上使用
index找不到了就报ValueError很难受。
作者:阿莹的三石



python list INDEX find 方法 Python list

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章