使用列表推导进行条件赋值
在最近的讨论中,程序员在使用 if/ 转换 for 循环时遇到了挑战else 结构为简洁的列表理解。原始代码段如下所示:
results = [] for x in xs: results.append(f(x) if x is not None else '')
目的是,如果 xs 中的相应元素为 None,则为结果列表中的元素分配一个空字符串,并将函数 f 应用于非 None 元素。
创建列表推导式的初始尝试因语法错误而失败:
[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]
其中:
此外,对于列表仅涉及基于条件过滤元素的推导式,语法为:
[f(x) for x in sequence if condition]
列表推导式之外的条件表达式
值得注意的是,像使用的条件表达式列表理解中的内容并不限于此构造。它们可用于需要根据条件在两个表达式值之间进行选择的各种情况,其用途与其他语言中的三元运算符 ?: 相同。
外部条件表达式的示例列表理解:
value = 123 print(value, 'is', 'even' if value % 2 == 0 else 'odd')
此表达式计算该值是否可以被 2 整除并打印相应的字符串。
以上是如何在 Python 中有效地使用列表推导式进行条件赋值?的详细内容。更多信息请关注PHP中文网其他相关文章!