如何检查一个列表中的所有元素是否都在另一个列表中?

时间:2019-07-27 18:54:18

标签: python

我有一封信清单。

我需要定义一个带有两个参数的函数,第一个是字符串,第二个是字母列表。然后返回布尔值,指示字符串中的所有字母是否都在字母列表中。

我尝试了循环,但它只会检查0索引,而没有其他检查。

lettersGuessed = ['a', 'b','c', 'p', 'l', 'e']

def isWordGuessed(str, lettersGuessed):
    '''
    secretWord: string, the word the user is guessing
    lettersGuessed: list, what letters have been guessed so far
    returns: boolean, True if all the letters of secretWord are in lettersGuessed;
      False otherwise
    '''
    if all(list(str)) in lettersGuessed:
        return True
    else:
        return False
print(isWordGuessed('bcp', lettersGuessed))

2 个答案:

答案 0 :(得分:0)

您的回答很简单

def isWordGuessed(str, lettersGuessed):
    return all(letter in lettersGuessed for letter in str)

也请不要使用str之类的内置名称作为变量

答案 1 :(得分:0)

我不推荐这两种方法,但是简单的解决方案是使用for循环:

for c in str:
    if c not in lettersGuessed:
        return False
return True

或理解:

return all(c in lettersGuessed for c in str)

但是您不应该这样。列表从根本上来说是不良的数据结构,用于检查是否存在元素。改用一组:

return all(c in lettersGuessed for c in set(str))

理想情况下,您应该从一开始就设置str。有关一些示例,请参见docs

最后,不要将str称为“ str”。 “ str”是Python本身使用的变量。当您命名其他字符串str时,您将覆盖该变量。使用“字符串”或“ real_string”或类似的名称代替。