所以我在麻省理工学院compsci课程6.00.1,当我通过手指练习和问题时,我试图尽可能使用列表理解,到目前为止我已经能够。
从我所做的阅读中说,你总是可以从理解中写出for
循环,但不是每个for
循环都可以用于理解。
我想知道什么时候我不能,什么时候可以?我是否必须编写循环,然后尝试将其理解,以确定它是否可行?在尝试将其理解之前,有没有办法知道?
示例:
def getAvailableLetters(lettersGuessed):
from string import ascii_lowercase as letters
letter_list = list(letters)
for x in lettersGuessed:
if x in letter_list:
letter_list.remove(x)
return ' '.join(letter_list)
print(getAvailableLetters(['a', 'b', 'x', 'z']))
理解:
def getAvailableLetters(lettersGuessed):
from string import ascii_lowercase as letters
letter_list = list(letters)
return ''.join(x for x in lettersGuesseed for x in letter_list if letter_list.remove(x))
print(getAvailableLetters(['a', 'b', 'x', 'z']))
现在当我尝试理解它(我的IDE,pycharm)说第二个x是'未使用的局部变量'而且lettersGuessed是一个'未解析的引用'。
这是我无法理解的时代之一吗?如果是这样,我怎么能告诉他们不必写出来呢?
答案 0 :(得分:0)
这是我无法理解的时间吗?
不,你在这里遇到了几个问题:
lettersGuesseed
有拼写错误letter_list.remove(x)
使用if
?完成所有修复后,这将作为原始代码使用:
def getAvailableLetters(letters_guessed):
from string import ascii_lowercase as letters
letter_list = list(letters)
return ' '.join([x for x in letter_list if x not in letters_guessed])
print(getAvailableLetters(['a', 'b', 'x', 'z']))
输出:
c d e f g h i j k l m n o p q r s t u v w y