首页 > 解决方案 > 如何在列表中查找项目的索引,但不是完全匹配

问题描述

我有一个类似这样的列表:

ls = ['item1', 'this is item2', 'item3']

我希望能够'this is item2'通过搜索找到该项目的索引'item2'。index 函数正在寻找完全匹配的,所以它在这里无济于事:

index = ls.index('item2')

我怎样才能达到这个要求?

标签: pythonpython-3.xlistindexing

解决方案


这是使用next生成器并enumerate获取索引的解决方案:

>>> ls = ['item1', 'this is item2', 'item3']
>>> next(i for i, v in enumerate(ls) if 'item2' in v)
1

StopIteration如果找不到该项目,它将引发。如果你愿意None或者-1相反,你可以把它作为第二个参数给next

>>> next((i for i, v in enumerate(ls) if 'item5' in v), -1)
-1

推荐阅读