检查列表中的所有条目是否都在字符串中

时间:2017-08-31 18:10:04

标签: python string list iterator

我有以下代码:

sent = 'My name is Karen and I drive a black car.'
l = ['Karen', 'black']
print all(words in l for words in sent)

当我认为它会返回true时,这段代码返回False。我很困惑为什么。有人可以向我解释发生了什么事吗?谢谢!

3 个答案:

答案 0 :(得分:1)

这里有两个问题:

  1. 当您遍历字符串时,您将遍历每个字符。你需要迭代每个单词。在您的情况下,您可以使用str.split
  2. 您需要测试l中的所有字词是否都在sent中的字词列表中。反之亦然。
  3. 通过以上更改,您的代码将是:

    >>> sent = 'My name is Karen and I drive a black car.'
    >>> words = sent.split()
    >>> l = ['Karen', 'black']
    >>> 
    >>> all(word in words for word in l)
    True
    

答案 1 :(得分:0)

您正在遍历字符串sent,该字符串将从该字符串中获取每个字符。你必须迭代l中的单词:

all(i in sent for i in l)

答案 2 :(得分:0)

您正在重复错误的列表并检查错误的项目

all(word in sent for word in l)