如何修复knapsack函数类型注解与pandas Series不兼容问题?
修复Knapsack函数的类型注解不兼容问题
问题根源
你的knapsack函数参数标注为List[Number],但调用时传入的是pandas的Series对象,二者类型不匹配,导致类型检查工具报错。
解决方案一:调用时将Series转为列表
直接在调用环节把Series转换为Python列表,匹配函数原有类型注解:
knapsack(limit, df['latency'].tolist(), df['amount'].tolist())
这种方式无需修改函数定义,适合希望保留原有函数参数约束的场景。
解决方案二:修改函数类型注解支持Series
如果希望函数同时兼容列表和Series输入,可以扩展参数的类型注解:
先导入pandas的Series类型,再用Union标注参数支持两种类型:
from typing import Union, List from pandas import Series Number = Union[int, float] def knapsack(W: int, wt: Union[List[Number], Series[Number]], value: Union[List[Number], Series[Number]]) -> int: # 函数实现逻辑
注意:若你的开发环境无法识别Series的类型注解,需要先安装pandas-stubs库来提供pandas的类型提示支持。
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

