如何检查字符串a是否是字符串b的子字符串?

时间:2017-06-06 15:02:44

标签: python

我知道如果我们想知道a中是否包含字符b,我们可以使用:

a in b

当a等于b时,上述表达式仍会返回True。我希望表达式在False时返回a == b,在Truea的子字符串时返回b。所以我使用了以下表达式:

a in b and a != b

我只是想知道Python中是否有一个更简单的表达式以相同的方式工作?

2 个答案:

答案 0 :(得分:4)

不确定Python中的直接字符串比较效率如何,但假设它们是O(n),这应该是相当有效且仍然可读的:

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

喜欢其他答案它也是O(n),但长度操作应该是O(1)。它也应该更适合边缘情况(例如,大于b)

答案 1 :(得分:1)

这将是一个简短的答案,但它就是它的本质。你有什么就足够了。

虽然可能还有其他选择,但你做到这一点的方式很容易理解,简单和可读性比其他任何东西(当然这对每个人都是主观的)。 IMO Python中的一个更简单的表达式,以相同的方式工作不存在。这只是我个人对这个问题的看法。我通常被鼓励关注KISS

  

KISS原则指出,如果保留大多数系统,它们的效果最好   简单而不是复杂;因此简单应该是一个   应避免设计中的关键目标和不必要的复杂性。

例如,另一个答案与明确的and没有任何不同,并且当与in==一起使用时,链接可能会造成混淆,因为很多人我会将其视为(a1 in b) != a1,至少乍看之下。