为什么当我将函数应用于列表的元素时,会出现 "TypeError: 'str' object is not callable "错误?

问题描述 投票:1回答:2

我想应用这个函数

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

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

每个元素(从第一个元素开始)都应该用用户提供的输入来代替。user_input.

(注意,我想改变我现有的列表。liste我不想创建一个新的)。)

所以我试着应用我的函数 run 使用 map 理解力

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

但这句话的结果是错误的

TypeError: 'str' object is not callable

我在这里做错了什么?

python list list-comprehension
2个回答
2
投票

map 默认情况下,接收一个param函数(你的 run 函数不接收params)。所以把 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 是因为你把字符串值传给了map (run 调用返回字符串值),而不是一个函数(callable)

© www.soinside.com 2019 - 2024. All rights reserved.