在 Python 中,列表理解提供了一种基于现有可迭代对象创建列表的简洁方法。然而,出现了一个关于涉及 if 语句的列表理解的问题。
目标是比较两个可迭代对象 a 和 b,并仅打印两者中出现的元素。预期的代码如下所示:
print([y if y not in b for y in a])
不幸的是,这段代码导致了语法错误。问题在于 if-else 结构的顺序。在 Python 中,条件语句必须位于列表理解中的 for 循环之后,除非它用作三元运算符。
正确语法:
[y for y in a if y not in b]
此代码迭代 a 中的每个元素 y。如果在 b 中未找到 y,则将其添加到列表中。结果列表将包含出现在 a 和 b 中的元素。
替代三元运算符语法:
[y if y not in b else other_value for y in a]
此代码使用三元运算符指定替代值 (other_value),以防在 b 中找不到 y。这种方法不太常见,通常在需要默认值时使用。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3