Python列表推导式调用append报can't assign to function call错误如何解决
错误产生原因
- 列表推导式语法不符合Python规范:
for关键字后必须遵循变量 in 可迭代对象的结构,你写的x1.append(int(np.median(i))) in list属于语法错误,Python会将x1.append(...)识别为赋值目标,而函数调用本身不支持被赋值,因此直接抛出can't assign to function call错误。 - 代码还存在两个隐藏问题:
- 直接使用Python内置类型名
list作为自定义变量名,会覆盖内置list的原有功能,属于不规范命名。 - 代码用到了numpy库的
np.median方法,但缺少对应的导入语句,未提前导入numpy的情况下运行会触发名称错误。
- 直接使用Python内置类型名
代码修改方案
方案1:用列表推导式实现(推荐)
列表推导式本身会自动生成新列表,不需要手动调用append方法,正确写法如下:
import numpy as np range_list = [range(130,135),range(135,140),range(140,145),range(145,150),range(150,155),range(155,160),range(160,165)] x1 = [int(np.median(i)) for i in range_list]
方案2:用普通for循环+append实现
如果习惯用append方法追加元素,使用普通for循环即可:
import numpy as np range_list = [range(130,135),range(135,140),range(140,145),range(145,150),range(150,155),range(155,160),range(160,165)] x1 = [] for i in range_list: x1.append(int(np.median(i)))
两种方案运行后得到的x1结果为[132, 137, 142, 147, 152, 157, 162],符合需求。
内容的提问来源于stack exchange,提问作者td gowri
相关产品推荐
相关产品推荐

