获取包含子字符串的第一个列表索引?

c00*_*ter 30 python list

对于列表,该方法list.index(x)返回值为的第一个项的列表中的索引x.但是如果我想查看列表项,而不仅仅是整个项目,我如何为此创建最多的Pythoninc方法?

例如,用

l = ['the cat ate the mouse',
     'the tiger ate the chicken',
     'the horse ate the straw']
Run Code Online (Sandbox Code Playgroud)

这个函数将返回1与参数一起提供tiger.

ken*_*ytm 33

非流畅的方法:

def index_containing_substring(the_list, substring):
    for i, s in enumerate(the_list):
        if substring in s:
              return i
    return -1
Run Code Online (Sandbox Code Playgroud)

  • Python 是如此伟大的语言,却没有对这些东西的内置支持?️ (2认同)

Joh*_*ooy 6

abyx 解决方案的变化(优化为找到匹配时停止)

def first_substring(strings, substring):
    return next(i for i, string in enumerate(strings) if substring in string)
Run Code Online (Sandbox Code Playgroud)

如果您是 2.6 之前的版本,则需要将其next()放在最后

def first_substring(strings, substring):
    return (i for i, string in enumerate(strings) if substring in string).next()
Run Code Online (Sandbox Code Playgroud)


lev*_*lev 6

单线:

index = [idx for idx, s in enumerate(l) if 'tiger' in s][0]
Run Code Online (Sandbox Code Playgroud)