Python中list(map(str.split(','), l2))报'list' object is not callable的原因
问题:map结合str.split(',')报错'list' object is not callable的原因
你原本的代码:
text = "HELLO WO,RLD, this" l2 = text.split(' ') list(map(str.split(','), l2))
运行后报错:'list' object is not callable
报错原因解析
str.split(',')这行代码的执行逻辑是直接调用字符串的split方法,传入分隔符',',它返回的是一个列表(比如对空字符串调用会返回['']),而map函数的第一个参数要求是一个可调用对象(比如函数、lambda表达式)。
当你把str.split(',')的返回值(一个列表)传给map的第一个参数时,map会尝试把这个列表当作函数去调用,而列表本身不是可调用对象,因此就抛出了'list' object is not callable的错误。
而你改写后的lambda x:x.split(',')是一个匿名函数,它是可调用的——接收每个l2里的元素x,然后对x执行split(',')操作,所以map可以正常工作。
另外补充:如果不想用lambda,也可以用functools.partial来绑定参数,写法如下:
from functools import partial list(map(partial(str.split, sep=','), l2))
partial(str.split, sep=',')会返回一个绑定了sep=','参数的可调用对象,和lambda的作用等价。
内容的提问来源于stack exchange,提问作者TaoLi
相关产品推荐
相关产品推荐

