如何简化if语句检查字符串中的常见字符?

时间:2015-06-23 20:21:04

标签: python string python-3.x list-comprehension

我想知道是否有更好的表达if语句的方法:

if any(i in word for i in '@/#')==False:

我正在遍历一个字符串列表,并将所有没有上述字符的字符串追加到新列表中(我还想保留旧列表)。上面的说法有效,但它很难看,我的IDE告诉我可能有更好的方法。有没有办法可以理清我想要的更漂亮或更快的字符串?

2 个答案:

答案 0 :(得分:4)

if not any(i in word for i in '@/#'):

if all(i not in word for i in '@/#'):

几乎没有理由将布尔值与TrueFalse==进行比较。

答案 1 :(得分:3)

你可以尝试这样:

characters = set('@/#')

然后:

if characters.isdisjoint(word):

或者替代(但有点慢,这对于极长的字符串可能有意义):

if not characters.intersection(word):

(当然,有一个更好的名称而不是characters与其概念含义有关)