You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python报错TypeError: 'tuple'对象不可调用——for循环内列表推导式问题

问题:列表推导式中触发TypeError: 'tuple' object is not callable错误

你尝试用列表推导式结合f-string生成字符串列表,编写了如下代码:

features = [("month", (1, 12)), ("day_of_year", (1, 365))]
for feature, range in features:
  cols= [f"transformed_{feature}_period_{i:02d}" for i in range(12)]

运行时出现如下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[4], line 3
      1 features = [("month", (1, 12)), ("day_of_year", (1, 365))]
      2 for feature, range in features:
----> 3     cols= [f"transformed_{feature}_period_{i:02d}" for i in range(12)]

TypeError: 'tuple' object is not callable

即使移除字符串中的变量,修改为以下代码,仍会触发相同错误:

for feature, range in features:
  cols= ["transformed_feature_period" for i in range(12)]

原因分析

核心问题是你在for循环中使用了range作为变量名,直接覆盖了Python内置的range()函数。

在循环迭代features时,每次取到的第二个元素是元组(比如(1, 12)),这个元组会被赋值给变量range。当你在列表推导式中调用range(12)时,实际上是在尝试调用这个元组对象——而元组是不可调用的,因此触发了TypeError。

这也是为什么移除f-string中的变量后错误依然存在:问题根源不在字符串模板,而在range(12)这一行的调用对象已经被替换成了元组。

解决方案

只需要把循环中的变量名从range改成其他名称(比如feature_range),避免覆盖内置函数即可:

features = [("month", (1, 12)), ("day_of_year", (1, 365))]
for feature, feature_range in features:
    cols = [f"transformed_{feature}_period_{i:02d}" for i in range(12)]

这样列表推导式中调用的range(12)就会指向Python内置的range()函数,不会再触发错误。

内容的提问来源于stack exchange,提问作者RicardoC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:38:20