使用【获取列表指定项的位置】指令,如果列表有多个该项,怎么样可以返回多个下标?
评论
收藏

使用【获取列表指定项的位置】指令,如果列表有多个该项,怎么样可以返回多个下标?

经验分享
金水
2024-08-28 11:30·浏览量:977
金水
发布于 2024-08-28 11:30977浏览

一、背景

    影刀的官方指令【获取列表指定项的位置】的本质是python中的index()方法,该方法只能返回匹配到的第一个值,例如:list1=[1,9,3,4,7,9,23],我想查询list1这个列表中数字9的索引: list1.index(9),那么返回是只会是1;但实际业务中,如:我想获取近期热销商品中,我这个店铺的分别排名第几,若有多个商品进入排行,index()便不符合需求了

二、实现过程

使用列表推导式配合python的内置函数enumerate,对该列表的下标(位置)与元素内容同时迭代,当元素内容与我们需要的相同,那么就返回此次迭代的下标(位置)。

具体代码如下:

def find_all_indices(lst,value):# lst是我们要查找的列表,value是我们要查下标(位置)的值是多少

    # return python中的关键字,与影刀<流程参数>中的添加输出参数一致
    return [index for index,current_value in enumerate(lst) if current_value == value]

   拆解一下这个 [index for index,current_value in enumerate(lst) if current_value == value],这是一个列表推导式(python中的语法,可以快速生成一个指定内容的列表)。enumrate是一个python的内置函数,用于创建一个新的可以迭代(循环)的对象,该对象包括参数的下标(位置)以及每个值。因此,我们需要两个变量来分别保存此次循环到的内容。其中变量index用于获取下标(位置),current_value用于获取此次循环到的值。如果不加后面的if current_value == value,那么输出return的结果就是所有的索引(因为我只返回index,没让返回current_value)

所以加上if判断,我们只返回此次获取到的值,与我们闯入的参数value相等的情况下的下标index。

三、实现结果展示

收藏
全部评论1
最新
发布评论
评论