Skip to main content
 首页 » 编程设计

python之列表理解未按预期评估

2025年05月04日9telwanggs

我有以下列表:

z = [ 
[7,None],  
[9,None],  
[None,7],  
[None, 15],  
[None, None],  
[2,None],  
[0,None]] 

..并且想要一个列表推导式,它会在元素存在时返回整数,即使它是 0 也是如此,并且对于两个子元素都为 None 的元素会返回 1。

我把它带到了这里:

[a or b if (a!=0 and b!=0) else 0 if set([a,b])=={0,None} else 1 if set([a,b])=={None} else -10 for a,b in z] 

..几乎可以工作,它返回:

[7, 9, 7, 15, None, 2, 0] 

所以它未能将元素 [None, None] 转换为 1。有谁知道如何修复它?

位 else -10 就在那里,因为我相信这样写的列表理解必须以 else 结尾,如果你遗漏它,它会抛出一个 语法错误

请您参考如下方法:

这个怎么样?

[a if a is not None else b if b is not None else 1 for a, b in z] 

输出:

[7, 9, 7, 15, 1, 2, 0]