1

可以说我有以下列表:

['ab=2','bc=5','ab=1','cd=6','ab=7']

在此列表中查找单词“ab”的所有外观的最佳(有效)方法是什么

4

4 回答 4

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 倍。

于 2012-06-03T12:50:35.937 回答
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']
于 2012-06-03T12:51:18.590 回答
4

你也可以使用过滤器:

mylist = ['ab=2','bc=5','ab=1','cd=6','ab=7']
filter(lambda s: 'ab' in s, mylist)
于 2012-06-03T12:52:27.930 回答
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']

这是列表理解

于 2012-06-03T13:34:36.600 回答