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 に答える