什么是在python中列表中找到多个字符串外观的最佳方法?

时间:2012-06-03 12:48:47

标签: python

假设我有以下列表:

  

[ 'AB = 2', 'BC = 5', 'AB = 1', 'CD = 6', 'AB = 7']

最好(有效)的方式来查找此列表中“ab”一词的所有外观

4 个答案:

答案 0 :(得分:6)

>>> 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倍,超过了最佳解决方案。

答案 1 :(得分:5)

如果'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']

答案 2 :(得分:4)

你也可以使用过滤器:

mylist = ['ab=2','bc=5','ab=1','cd=6','ab=7']
filter(lambda s: 'ab' in s, mylist)

答案 3 :(得分:2)

如果你只是判断:它是否有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']

这是List Comprehensions