我有以下列表:
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]
