for循环和列表理解的不同结果

时间:2017-04-07 02:54:39

标签: python list

boolean login = false;

while (read.nextLine() !=null) {
    String user = read.next();

    String pass = read.next();

    read.next();

    if(usernameT.getText().equals(user) && passwordT.getText().equals(pass)) {
        login = true;
        break;                 
    }
}

if (login) {
    new Menu();
} else {
    JOptionPane.showMessageDialog(null, "Incorrect username or password");

    usernameT.setText("");

    passwordT.setText("");
}

我运行上面的代码片段我得到了不同的结果。 for循环输出为animals = ['lion' ,'tiger', 'lepord', 'cheetah', 'cat'] find = [] for name in animals: if name == 'lion': find.append(name) print (find) find = [find.append(name) for name in animals if name=='lion'] print (find) 而 列表理解是['lion']

在我看来,for循环和列表理解应该产生相同的结果。但事实并非如此。请帮我找到原因。

1 个答案:

答案 0 :(得分:1)

None来自列表方法append,返回None

而不是像以下那样调用append

[find.append(name) for name in animals if name=='lion']

写:

[name for name in animals if name=='lion']