我知道如果我们想知道a
中是否包含字符b
,我们可以使用:
a in b
当a等于b时,上述表达式仍会返回True
。我希望表达式在False
时返回a == b
,在True
是a
的子字符串时返回b
。所以我使用了以下表达式:
a in b and a != b
我只是想知道Python中是否有一个更简单的表达式以相同的方式工作?
答案 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
,至少乍看之下。