python - 如何在列表中查找项目的索引,但不是完全匹配
问题描述
我有一个类似这样的列表:
ls = ['item1', 'this is item2', 'item3']
我希望能够'this is item2'
通过搜索找到该项目的索引'item2'
。index 函数正在寻找完全匹配的,所以它在这里无济于事:
index = ls.index('item2')
我怎样才能达到这个要求?
解决方案
这是使用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
推荐阅读
- php - 使用插入值数组执行准备好的语句不起作用
- sql - OPENJSON 不会将所有文档都选择到 SQL 表中
- azure - 查询 SQL 数据库返回错误:用户“免费试用”登录失败
- mysql - SQL 触发器不起作用 #1407 - 错误的 SQLSTATE:“已批准!”
- apache-kafka - Kafka 流 - 多个主题作为同一来源还是每个来源一个主题?
- crystal-reports - 如何在水晶报表中将字体大小设置为富文本框字段
- r - 定义用户函数以从 tibble 中添加/减去
- jmeter - 在 JMeter 中使用事务控制器是一种好方法吗?
- python - 如何在 Python 中使用方括号的类中实现方法(如 pandas DataFrame 中的 loc)?
- java - 在Java中将静态方法作为参数传递