2012-04-19 97 views
3

我有一个字符串,A = "abcdef"和几个字符"a","f""m"。我希望有一个条件,以确保没有任何字符的出现在A,即检查字符串A中是否出现多个字符?

if a not in A and f not in A and m not in A: 
    # do something 

有没有更好的方式来做到这一点?谢谢!

回答

11

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 

更接近您的需求?

+0

感谢您的回答。然而,这不是我想要的......在这个例子中,如果c =“acx”,我想要一个答案“真”,因为“x”不在a中,但isdisjoint给出了“false”。 – Luke 2012-04-20 15:21:52

+1

对不起,我很想念你的编辑。设置十字路口对于这个问题绝对是很棒的。 – Luke 2015-11-20 16:22:00

0
True in [i in 'abcdef' for i in 'afm'] 

返回True 和

True in [i in 'nopqrst' for i in 'afm'] 

提供虚假

+5

更优雅的是:'any(c in“AFM”中c的“SOMETHING”)。 – 2012-04-19 14:18:17

+0

我想出于同样的原因,我评论bgporter的答案。这对我有用。不过谢谢。 – Luke 2012-04-20 15:52:32

相关问题