如何用布尔mask列表处理Python List,将False对应位置替换为'.'求优雅单行写法
我们可以使用另一个列表中的布尔值对列表做mask过滤,实现代码如下:
arr = [1,2,3] mask = [True, True, False] [a for a, m in zip(arr, mask) if m]
如果不需要过滤元素、保留全部位置,仅将mask中False对应的元素替换为字符.,可以直接用带三元判断的列表推导实现,优雅的单行写法如下:
[a if m else '.' for a, m in zip(arr, mask)]
针对示例的arr和mask运行后,输出结果为[1, 2, '.'],完全符合预期。
内容的提问来源于stack exchange,提问作者kiriloff
相关产品推荐
相关产品推荐

