Skip to main content
 首页 » 编程设计

python之如果没有 else之Python 列表

2025年05月04日1398°冷暖

我知道下面的代码是有效的:

list = [1 , 2 if 1==1 else 0, 3] 

但是如果 if 表达式(在本例中为 1==1)返回 false,我该如何省略列表插入呢?

我的意思是,如果表达式无效,我不想插入任何值(包括“无”、“[]”)。

我试过这样的东西

list = [1 , 2 if 1==1, 3] 

但它不起作用。

请您参考如下方法:

您不能使用该用法,因为您正在定义一个包含三个值的文字列表。通过在括号之间放置两个逗号和三个表达式,您已 promise 在列表中提供三个元素。如果不对某物求值,就无法让表达式“消失”。

在实际列表理解中,您可以通过将 if 放在 for 子句而不是目标表达式中来实现:

>>> x = [1, 2, 3, 4] 
>>> [a if a != 3 else 'three' for a in x] 
[1, 2, 'three', 4] 
>>> [a for a in x if a != 3] 
[1, 2, 4] 

第一个理解使用条件表达式a if a != 3 else 'three',它必须同时包含if和else部分因为表达式必须计算出某个值。第二个理解使用 if a !=3 因为这是列表理解语法的一部分;它不是条件表达式的一部分,在这种情况下不能包含 else。它的工作是简单地限制将 x 中的哪些值分配给 a,而不是计算值本身。