私が次のリストを持っているとしましょう:
['ab = 2'、'bc = 5'、'ab = 1'、'cd = 6'、'ab = 7']
このリストで単語「ab」のすべての出現を見つけるための最良の(効率的な)方法は何ですか
私が次のリストを持っているとしましょう:
['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']
これはリスト内包表記です