2017-06-06 15 views
3

私たちは、文字列aは、我々が使用することができますbに含まれているかどうかを知りたい場合ことを知っている:文字列aが文字列bの部分文字列かどうかを確認する方法は?

a in b 

Bに等しい場合には、上記の明示はまだTrueを返します。 a == bと返すときFalseを返し、abの部分文字列のときにはTrueを返します。だから私は次の式を使用しました:

a in b and a != b 

同じように動作するPythonのより単純な式がありますか?

+8

これはかなり単純で明確です。 –

+0

aがbの先頭にない場合は、 'b.find(a)> 0'を試すことができます。 aがbの先頭にある場合は、動作しません:) –

答えて

4

直接文字列の比較はPythonであるが、どのように効率的に確認しないと仮定すると、彼らはO(n)が、これは合理的に効率的で、まだ読めるする必要があります:

len(a) < len(b) and a in b 

が、それはまた、O(n)のだ他の回答がお好き、長さ演算はO(1)でなければなりません。また、エッジの場合に適している必要があります(例:bより大きい)

1

これは簡単な答えですが、それはそれです。あなたが持っているもので十分です。

他の選択肢があるかもしれませんが、あなたがやったやり方は、他のものよりも理解しやすく、シンプルで読みやすいです(もちろん、これは誰もが主観的です)。 IMO 同じように動作するPythonのより単純な式は存在しません。これは私の個人的な視点です。私は通常KISSに従うことを奨励している:彼らは シンプルではなく、複雑に保たれている場合は、ほとんどのシステムが最適に動作

KISSの原則の状態を、したがって、シンプルさは の重要な目標であり、不要な複雑さは避けるべきです。一例として、

、それが明示的andから任意の異なるではありません、とin==で使用した場合、多くの人が少なくとも一見、(a1 in b) != a1としてそれを見ることができますので、チェーンが混乱することができ、他の答え。

関連する問題