Python random.choice([i if len(i)== 9 for i in words])列表理解上的语法错误

Das*_*pez 0 python list-comprehension list

Python 2.7

Ubuntu 12.04

我试图改变这个:

nine = []
for each in word_list:
    if len(each) == 9:
        nine.append(each)
return random.choice(nine)
Run Code Online (Sandbox Code Playgroud)

进入:

return random.choice([i if len(i) == 9 for i in words])
Run Code Online (Sandbox Code Playgroud)

然而,这给了我一个语法错误,我相信顺序是正确的,这是什么导致这失败?

the*_*eye 8

如果你没有其他部分,那就if必须在最后.所以改变

[i if len(i) == 9 for i in words]
Run Code Online (Sandbox Code Playgroud)

[i for i in words if len(i) == 9]
Run Code Online (Sandbox Code Playgroud)