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

  1. 简单介绍下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 <module>
    print(name.index("fuck"))
ValueError: 'fuck' is not in list
  1. 可以使用try except来避免退出
try:
    print(name.index("fuck"))
except ValueError:
    print("can not find member index")

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

  1. 编写自己的*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语言还是牛逼的,毕竟除了嵌入式啥的以外造轮子很强。

  1. 肯定还有许多其他简单的方法,python应该已经有这样的内置方法了,但是我懒得去找了,我就是看到书上使用
    index找不到了就报ValueError很难受。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值