如何扩展“in”测试?

16 浏览
0 Comments

如何扩展“in”测试?

我通常通过使用in来测试一个字符串中是否存在子字符串:

In [3]: x = 'Hello World'
In [5]: 'rl' in x
Out[5]: True

我如何扩展这个测试,以便在一个字符串中测试一个或多个子字符串的存在?

我特别想避免使用一系列的or

In [6]: 'rl' in x or 'ld' in x
Out[6]: True

(子字符串的集合将是可变的)

0
0 Comments

问题的原因是希望在一个'in'测试中扩展测试条件,即希望在一个字符串中同时判断多个子字符串是否存在。

解决方法是使用内置函数any,结合生成式(comprehension)来实现。

具体的解决方法是,使用生成式来遍历待测试的字符串,并在生成式中使用'in'测试来判断字符串中是否包含指定的子字符串。然后将生成式作为参数传递给any函数,any函数会返回一个布尔值,表示是否存在满足条件的子字符串。

下面是一个示例,演示了如何使用any函数和生成式来判断一个字符串中是否同时存在多个子字符串:

>>> x = 'Hello World'
>>> any(i in x for i in ('rl', 'ld'))
True

以上代码中,字符串x为'Hello World',生成式i in x for i in ('rl', 'ld')会遍历字符串x,并判断是否存在子字符串'rl'和'ld'。any函数会返回True,表示字符串x中同时存在'rl'和'ld'。

对于这个问题,另一个用户提到了在问题被标记为重复后如何回答,他解释说他在问题被标记为重复前就开始回答了。

0