带有条件语句的列表推导式
在 Python 中,列表推导式提供了一种生成新列表的紧凑方式。但是,在这些推导式中使用条件语句时,遵守正确的语法以避免错误至关重要。
问题:比较可迭代对象
假设我们有两个可迭代对象,一个和 b,我们想要创建一个新列表,其中包含出现在两个可迭代对象中的元素。我们尝试使用以下代码:
<code class="python">a = ('q', 'r') b = ('q') print([ y if y not in b for y in a])</code>
语法错误
但是,此代码会产生无效语法错误,表明理解中使用的 lambda 函数存在问题.
解决方案:重新排序推导式
在列表推导式中使用条件语句的正确语法是将 if 表达式放在 for 子句之后。在我们的例子中,更正后的代码将是:
<code class="python">[y for y in a if y not in b]</code>
此理解将迭代 a 并仅当元素不存在于 b 中时才将元素添加到新列表中。结果应该产生 ['r'],如预期。
替代语法
或者,我们可以使用 if-else 三元运算符来处理其中的条件逻辑列表理解:
<code class="python">[y if y not in b else None for y in a]</code>
此代码将创建一个新列表,其中添加 b 中不存在的元素,而其他元素接收 None 值。
以上是Python 列表推导式中条件语句的正确语法是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!