在一行 Python if-else 语句中传递语句

Art*_*Sbr 1 python

我想编写一个单行 if-else 语句,如果不满足第一个条件,则该语句不执行任何操作。这个问题与我想要实现的目标非常相似,但我希望我的代码pass在不满足条件时(不执行任何操作)。

换句话说:

# Some list
cols = ['firstname', 'middlename', 'lastname', 'dob', 'gender', 'salary']

# Filter elements in list
[col if 'name' in col else pass for col in cols]

# Expected output
> ['firstname', 'middlename', 'lastname']
Run Code Online (Sandbox Code Playgroud)

在阅读了另一篇文章中的评论后,我也尝试跳过该else声明:

[col if 'name' in col for col in cols]
> SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我想简化为一行的语法是:

my_list = []
for col in cols:
    if 'name' in col:
        my_list.append(col)
Run Code Online (Sandbox Code Playgroud)

上面的代码可以简化为一行吗?

che*_*ner 5

pass是一个语句,而不是一个值,因此不能在条件表达式中使用。

您想要使用列表理解的过滤子句。

[col for col in cols if 'name' in col]
Run Code Online (Sandbox Code Playgroud)

不幸的是,该关键字if用于三个不同的语法结构(if语句、条件表达式以及列表/字典/集合推导式和生成器表达式共享的迭代结构)。