小能豆

如果列表推导中有其他内容

javascript

我有一个清单l

l = [22, 13, 45, 50, 98, 69, 43, 44, 1]

对于 45 以上的数字(含),我想加 1;对于小于 45 的数字,我想加 5。

我试过

[x+1 for x in l if x >= 45 else x+5]

但它给出了语法错误。如何在列表推导中实现这样的if– ?else


阅读 42

收藏
2024-08-28

共1个答案

小能豆

您遇到的语法错误是由于列表推导中的位置不正确if-else。在 Python 中,if-else在列表推导中使用语句时,正确的语法是:

[<expression if condition else other_expression> for item in iterable]

对于您的具体情况,您想要添加1大于或等于的数字45并添加5小于的数字45,正确的列表理解是:

l = [22, 13, 45, 50, 98, 69, 43, 44, 1]

# List comprehension with if-else
result = [x + 1 if x >= 45 else x + 5 for x in l]

print(result)

解释:

  • x + 1 if x >= 45 else x + 5:这是条件表达式。如果大于或等于,则将添加1到;否则,将添加到。x``x``45``5
  • for x in l:这将迭代x列表中的每个元素l

输出:

列表如下l

l = [22, 13, 45, 50, 98, 69, 43, 44, 1]

输出将是:

[27, 18, 46, 51, 99, 70, 48, 49, 6]

此代码正确地将条件和转换应用于列表中的每个元素。

2024-08-28