如何找到以某个子串开头的字符串在列表中的索引?
我有一个这样的列表:
lines = [
"line",
"subline2",
"subline4",
"line",
]
我想要找出那些以某个特定字符串开头的行的索引。
我用这个方法:
starts = [n for n, l in enumerate(lines) if l.startswith('sub')]
不过,也许有人知道更好的方法?
2 个回答
3
虽然我喜欢你的方法,但这里有另一种方法可以正确处理lines
中相同的条目(也就是说,和你的示例代码处理的方式类似),而且在lines
长度增加的情况下,它的性能也差不多:
starts = [i for i in range(len(lines)) if lines[i].startswith('sub')]
8
我知道这个问题已经有一段时间没被讨论了,但我还是想分享一个新的解决方案,看看有没有人感兴趣。
你的方法看起来不错,不过我这里有一个类似的策略,使用了 list.index()
方法:
starts = [lines.index(l) for l in lines if l.startswith('sub')]
从时间上看,这两个函数的执行时间差不多(你的 enumerate
方法平均大约需要 1.7145156860351563e-06
秒,而我用 .index()
的方法平均需要 1.7133951187133788e-06
秒)