Python使用itertools报TypeError: 'list' object is not callable错误求助
问题排查与解决
错误原因
你代码里的核心问题是函数参数名和Python内置类型list重名:
- 定义
get_all_pair_combinations(list)时,参数list会覆盖全局作用域里的内置list()构造函数 - 当函数内部执行
list(itertools.combinations(list, 2))时,第一个list已经变成了传入的列表参数,而非用来生成列表的构造函数,试图调用一个列表对象就会触发TypeError: 'list' object is not callable
修复代码
把函数的参数名改成非内置关键字/类型的名字,比如input_list:
import itertools def get_all_pair_combinations(input_list): return list(itertools.combinations(input_list, 2)) pair_indexes = get_all_pair_combinations(list(range(len(features_vectors[0]))))
额外提示
永远不要用Python的内置类型名(比如list、dict、str、int等)作为变量名或参数名,这会导致内置功能被覆盖,引发类似的奇怪错误。
内容的提问来源于stack exchange,提问作者Behnoosh Mohammadzadeh
相关产品推荐
相关产品推荐

