2017-06-06 265 views
3

我知道,如果我們想知道串a是否包含在b我們可以使用:如何檢查字符串a是否是一個不等於字符串b的子字符串?

a in b 

當等於b,上面明示仍返回True。我想要一個表達式,當a == b將返回False並返回Trueab的子串。所以我用下面的表達式:

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原則狀態;因此簡化應該是設計中的關鍵目標,應避免不必要的複雜性。

舉個例子,有in==使用時,因爲很多人會認爲這是(a1 in b) != a1,至少第一眼對方的回答是不明確的and什麼不同,和鏈接可能會造成混淆。

相關問題