在 Python 中,列表推导式提供了一种将可迭代元素转换为新列表的优雅方法。然而,将包含 if/else 语句的传统 for 循环转换为列表推导式可能会很棘手。
问题陈述:
考虑以下 for 循环:
results = [] for x in xs: results.append(f(x) if x is not None else '')
目标是如果 x 为 None 则为 '',否则使用列表为 f(x)理解。尝试将其写为:
[f(x) for x in xs if x is not None else '']
会导致语法错误。正确的语法是什么?
解决方案:
解决方案在于列表理解中元素的排序。正确的语法是:
[f(x) if x is not None else '' for x in xs]
泛化:
一般来说,对于带有 if/else 条件表达式的列表推导式,语法是:
[f(x) if condition else g(x) for x in sequence]
对于仅包含 if 条件的列表推导式(不包括 else 子句),语法简化to:
[f(x) for x in sequence if condition]
区分基于条件过滤元素的列表推导式和基于条件求值为指定值的条件表达式非常重要。
以上是如何在 Python 列表推导式中正确使用 if/else?的详细内容。更多信息请关注PHP中文网其他相关文章!