检查字符串A中是否出现多个字符?
我有一个字符串,A = "abcdef"
和几个字符"a"
,"f"
和"m"
。我希望有一个条件,以确保没有任何字符的出现在A
,即检查字符串A中是否出现多个字符?
if a not in A and f not in A and m not in A:
# do something
有没有更好的方式来做到这一点?谢谢!
Sets是有用的这一点 - 看到isdisjoint()
方法:
返回真,如果一套没有任何元素与其他共同点。 当且仅当它们的交集是空集时,集合才是不相交的。
版本2.6中的新功能。评论后
>>> a = "abcde"
>>> b = "ace"
>>> c = "xyz"
>>> set(a).isdisjoint(set(b))
False
>>> set(a).isdisjoint(set(c))
True
编辑
套依然是你的朋友。如果我跟着你现在好了,你想这个(或接近它):
我们只需要设置好一切为集开始为清晰起见:
>>> a = set('abcde')
>>> b = set('ace')
>>> c = set('acx')
如果所有的在您的字符集字符是字符串中,出现这种情况:
>>> a.intersection(b) == b
True
如果任何这些字符是不出现在你的字符串,出现这种情况:
>>> a.intersection(c) == c
False
更接近您的需求?
True in [i in 'abcdef' for i in 'afm']
返回True 和
True in [i in 'nopqrst' for i in 'afm']
提供虚假
更优雅的是:'any(c in“AFM”中c的“SOMETHING”)。 – 2012-04-19 14:18:17
我想出于同样的原因,我评论bgporter的答案。这对我有用。不过谢谢。 – Luke 2012-04-20 15:52:32
感谢您的回答。然而,这不是我想要的......在这个例子中,如果c =“acx”,我想要一个答案“真”,因为“x”不在a中,但isdisjoint给出了“false”。 – Luke 2012-04-20 15:21:52
对不起,我很想念你的编辑。设置十字路口对于这个问题绝对是很棒的。 – Luke 2015-11-20 16:22:00