2017-06-06 254 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什么不同,和链接可能会造成混淆。

相关问题