首页 > 解决方案 > 当我将函数应用于列表列表的元素时,为什么会出现“TypeError:'str' object is not callable”错误?

问题描述

我想应用这个功能

def run():
    user_input = input("type in: ")
    return user_input

到此列表列表的每个元素liste = [[1],[2],[3],[4],[5]]

每个元素(从第一个元素开始)都应替换为用户提供的 input user_input

(注意,我想更改现有列表liste;我不想创建新列表。)

所以我尝试在列表理解中run应用我的函数map

liste = [x for x in map(run(),liste)]

但是该语句导致错误

TypeError: 'str' object is not callable

我在这里做错了什么?

标签: pythonlistlist-comprehension

解决方案


map默认情况下接收一个参数函数(您的run函数不接收任何参数)。所以将map函数更改为:

liste = [x for x in map(lambda x: run(),liste)]

或者,更改您的run函数以接收一个参数:

def run(x):
    user_input = input("type in: ")
    return user_input


liste = [[1], [2], [3], [4], [5]]

print([x for x in map(run, liste)])

请记住,map接收函数,而不是像你所做的函数调用。您得到的原因TypeError: 'str' object is not callable是因为您将字符串值传递给映射(run调用返回字符串值)而不是函数(callable


推荐阅读