可以说我有以下列表:
['ab=2','bc=5','ab=1','cd=6','ab=7']
在此列表中查找单词“ab”的所有外观的最佳(有效)方法是什么
>>> mylist = ['ab=2','bc=5','ab=1','cd=6','ab=7']
>>> [i for i in mylist if 'ab' in i]
['ab=2', 'ab=1', 'ab=7']
用 对所有提出的解决方案进行计时timeit
,表明这是最快的解决方案,大约是次优的 2 倍。
好吧,如果'ab'
总是在前面,这将是最有效的,除非数据总是像这样简单,在这种情况下,@fraxel 的解决方案将是最快的。
>>> data = ['ab=2','bc=5','ab=1','cd=6','ab=7']
>>> [x for x in data if x.startswith("ab")]
['ab=2', 'ab=1', 'ab=7']
你也可以使用过滤器:
mylist = ['ab=2','bc=5','ab=1','cd=6','ab=7']
filter(lambda s: 'ab' in s, mylist)
如果只判断:有没有ab
。你只能通过这个
>>>data = ['ab=2','bc=5','ab=1','cd=6','ab=7' ,'abc=1']
>>>[x for x in data if 'ab' in x]
>>>['ab=2', 'ab=1', 'ab=7', 'abc=1']
如果需要判断: 前面的字符串是否char =
相等ab
。可以使用partition method
>>>[x for x in data if x.startswith('ab=')]
>>>['ab=2', 'ab=1', 'ab=7']
这是列表理解