我有这些变量,a,b,c和d。它们是长度为75的值列表,但有些值是字符串' n / a'。为了使用这些值进行任何计算,我需要过滤掉'不适用。
这是我的代码:
for i in range(len(a)):
if str(a)!='n/a' & str(b)!='n/a' & str(c)!='n/a' & str(d)!='n/a': #problem area
a*b/c*d #some function here.
我收到错误:
TypeError: unsupported operand type(s) for &: 'str' and 'str'
有什么想法吗?
答案 0 :(得分:4)
&
是一个按位运算符,只能用于整数。请尝试使用and
。
答案 1 :(得分:0)
将这些&
替换为and
或使用大括号作为运算符优先级:
if (str(a)!='n/a') & (str(b)!='n/a') & (str(c)!='n/a') & (str(d)!='n/a'):
答案 2 :(得分:0)
尝试用if 'n/a' not in map(str, [a,b,c,d]):
答案 3 :(得分:0)
for w, x, y, z in zip(a, b, c, d):
try:
result = w * x / y * z
# now do something with result
except TypeError:
pass
答案 4 :(得分:0)
仍然有点可读的单行:
a,b,c,d = zip(*[row for row in zip(a,b,c,d) if "n/a" not in row])