循环在python中的列表中

时间:2015-01-24 23:07:36

标签: python list

所以,假设我有一个secretWord = 'apple',我有一个名为lettersGuessed的列表。

lettersGuessed = ['a', 'e', 'i', 'k', 'p', 'r', 's']

如果已经猜到True(即secretWord的所有字母都在secretWord中),则此函数返回布尔值lettersGuessed,否则返回False

如果我写这样的话

for c in secretWord:
    matched = [l for l in lettersGuessed if c == l]
    if len(matched) == 0:
        return False

    return True

matched = [l for l in lettersGuessed if c == l]

中究竟发生了什么

2 个答案:

答案 0 :(得分:3)

您正在构建列表中所有字母的列表,这些字母等于密码字的当前字符,如果该列表为空,则推断当前字符尚未被猜到。

当然要简单得多

return all(c in lettersGuessed for c in secretWord)
在我看来,这对读者来说也更加清晰。

答案 1 :(得分:0)

matched = [l for l in lettersGuessed if c == l]

csecretWord中的每个字母,而llettersGuessed中的每个字母。让我们逐个检查一下;

l for l in lettersGuessed 

这等于;

for l in lettersGuessed:
    dosomethingwith l

因此,此部分返回l,其他部分正在检查if c == l,因此如果此True,则返回True。基本上,如果lc匹配。