【发布时间】:2013-04-29 02:54:30
【问题描述】:
我之前已经找到了这个问题的一些答案,但是对于当前的 Python 版本来说它们似乎已经过时了(或者至少它们对我不起作用)。
我想检查一个子字符串是否包含在字符串列表中。我只需要布尔结果。
我找到了这个解决方案:
word_to_check = 'or'
wordlist = ['yellow','orange','red']
result = any(word_to_check in word for word in worldlist)
我希望从这段代码中得到一个True 值。如果单词是“der”,那么输出应该是False。
但是,结果是生成器函数,我找不到获取True 值的方法。
有什么想法吗?
【问题讨论】:
-
您发布的代码运行良好(
wordlist/worldlist除外)。我猜你之前尝试过any()呼叫时忘记了。 -
我错过了你已经使用了
any。 -
查看您的代码和 cmets,我认为问题在于我正在使用的“任何”函数。它可能是 numpy 模块中的 any 函数。所以解决方案是改用内置函数,但是一旦导入了 numpy 模块,你知道如何做到这一点吗?
-
当我使用
ipython --pylab时,这个问题一直出现在我身上,它“有用地”为您从 numpy 导入 *。在这种情况下,您可以直接使用__builtin__.any而无需像 Ashwini 的回答中那样导入__builtin__,因为__builtin__会自动显示在交互式 shell 中。还有@DSM:显然numpy.any的行为在1.7 中发生了变化(变得更糟)。 -
另外,请参阅下面的新答案,该答案通过将单词组合成单个字符串显示了一种更快的替代方法。