如何在列表中找到以某些子字符串开头的字符串索引?

时间:2013-02-22 11:02:44

标签: python

我有一些这样的清单:

lines = [
    "line",
    "subline2",
    "subline4",
    "line",
]

我想获取以某些子字符串开头的行索引列表。

我使用这种方法:

starts = [n for n, l in enumerate(lines) if l.startswith('sub')]

但也许有人知道更美妙的方法吗?

2 个答案:

答案 0 :(得分:2)

我知道已经有一段时间了,因为这个问题很活跃,但是如果有人感兴趣的话,这是另一个解决方案。

您的方式似乎很好,但这是一个类似的策略,使用list.index()方法:

starts = [lines.index(l) for l in lines if l.startswith('sub')]

就时间而言,这两个函数的时间大致相同(1.7145156860351563e-06解决方案平均enumerate秒,1.7133951187133788e-06解决方案.index()秒)

答案 1 :(得分:2)

虽然我喜欢您的方法,但这里有另一种方法可以正确处理 lines 中的相同条目(即类似于您的示例代码的方式),并且具有相当的性能,同样适用于 lines 的长度{1}} 增长:

starts = [i for i in range(len(lines)) if lines[i].startswith('sub')]