Pandas中~运算符使用疑惑:布尔列表取反触发TypeError如何解决?
问题解决:布尔列表用
~取反报错的原因及解决方法 错误原因
Python的~是按位取反运算符,仅能对整数类型执行操作,无法直接作用于list对象,因此执行~mask时会触发TypeError: bad operand type for unary ~: 'list'。
正确的取反方法
方法1:列表推导式(原生Python最常用)
遍历列表中的每个布尔值,用not运算符逐个取反:
mask = [False, False, False, False, True, True, False] neg_mask = [not b for b in mask] # 结果:[True, True, True, True, False, False, True]
方法2:使用numpy数组(适合数值计算场景)
如果是数据处理场景,可借助numpy布尔数组——numpy重载了~运算符,支持直接对数组取反:
import numpy as np mask = [False, False, False, False, True, True, False] mask_np = np.array(mask) neg_mask = ~mask_np # 结果:array([ True, True, True, True, False, False, True])
方法3:map函数
用map配合匿名函数批量处理列表元素:
mask = [False, False, False, False, True, True, False] neg_mask = list(map(lambda x: not x, mask)) # 结果:[True, True, True, True, False, False, True]
内容的提问来源于stack exchange,提问作者DDogu
相关产品推荐
相关产品推荐

