【问题标题】:Error: 'List' object is not callable in map() function错误:“列表”对象在 map() 函数中不可调用
【发布时间】:2025-12-31 06:50:11
【问题描述】:
def powerof(num):
    return num**2

number = [1,2,3,4,5,6,7,8]
s = list(map( powerof , number))
print(s)

错误:“列表”对象不可调用

【问题讨论】:

  • 您使用了list 作为变量名。重命名它,它应该可以工作。
  • 这就是为什么提供minimal reproducible example 很重要。您提供的代码不完整或无法验证,它工作正常:repl.it/repls/FrozenDefinitiveSoftwareagent
  • 当我在尝试 map() 时也遇到此错误时,Google 将我引向了这个问题。问题是我的字典周围有方括号:pd.DataFrame({'x': [2, 3]})['x'].map([{2:'c', 3:'d'}])(正确的是pd.DataFrame({'x': [2, 3]})['x'].map({2:'c', 3:'d'})

标签: python list typeerror map-function


【解决方案1】:

您已在代码的前面将list 定义为变量。

不要这样做。将您的变量称为 lst 或者更具描述性的名称。

复制错误的最小示例:

list = [1, 2, 3]

def powerof(num):
    return num**2

number = [1,2,3,4,5,6,7,8]
s = list(map( powerof , number))
print(s)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-49-7efe90f8f07a> in <module>()
      5 
      6 number = [1,2,3,4,5,6,7,8]
----> 7 s = list(map( powerof , number))
      8 print(s)

TypeError: 'list' object is not callable

【讨论】:

    【解决方案2】:

    出现此错误是因为您之前使用了 list 对象。

    永远不要调用list()对象,如果你以前用过list的话。

        list = [1, 2, 3]    # remove this list variable name and use any different one, then it will work.
        
        def powerof(num):
            return num**2
        
        number = [1,2,3,4,5,6,7,8]
    
        s = list(map( powerof , number))
        print(s)
    

    输出:- [1, 4, 9, 16, 25, 36, 49, 64]

    【讨论】:

      【解决方案3】:

      map() 可用于从相同类型的数据映射相同类型的值。

      def mapExmple(*string):
          var=""
          for i in string:
              var+=i
          return var
      
      exm_tuple=('T','E','X','T')
      
      result=list(map(mapExmple,exm_tuple))
      print(result)
      

      预期输出:

      ['T', 'E', 'X', 'T']
      

      【讨论】:

        【解决方案4】:
        list = [1, 2, 3]    # remove this list variable name and use any different one, then it will work.
        
        def powerof(num):
            return num**2
        
        number = [1,2,3,4,5,6,7,8]
        
        s = set(map( powerof , number))
        print(s)
        

        使用集合代替列表

        【讨论】: