TabPy(Tableau与Python集成)中的‘list’非整数类型错误
TabPy乘法计算TypeError问题排查与解决
问题描述
- 执行TabPy乘法计算时触发错误,错误代码:
6116DD27 - 报错信息:
TypeError: Can't multiply sequence by non-int of type 'list' - 异常提示:与Analytics Extension数据源通信失败,脚本处理终止
- 用户确认未直接对列表类型变量执行乘法操作
可能原因与解决方法
- 参数默认以列表形式传入TabPy
从Tableau传递到TabPy的参数,哪怕是单个单元格值,也会被包装为长度为1的列表。直接对两个列表执行乘法操作就会触发该错误。
解决:提取列表中的单个元素再计算,示例代码:def multiply(a, b): return a[0] * b[0] - 字段被识别为字符串序列
若数据源中的数值字段被误识别为字符串类型,即使视觉上是数字,相乘时也会被当作序列处理。
解决:先将参数转为数值类型再计算,示例代码:def multiply(a, b): return float(a[0]) * float(b[0]) - 脚本逻辑隐式生成列表
若脚本中使用了返回列表的函数或表达式,会导致乘法操作的其中一方为列表类型。
解决:加入类型检查调试,确认变量类型后修正逻辑,示例代码:def multiply(a, b): print(type(a), type(b)) # 打印参数类型用于调试 return a[0] * b[0]
内容的提问来源于stack exchange,提问作者Mr. Basu
相关产品推荐
相关产品推荐

