为什么在使用map函数时出现TypeError'list'对象不可调用?
我试图将一些逗号分隔的数字作为输入分开:
numbers_ = input("Please enter numbers: ")
iterator_ = map(str.split(','), numbers_)
print (next(iterator_))
但我不断收到此错误:
Please enter numbers: 1,2,3,4
Traceback (most recent call last):
File "C:UserstomerkPycharmProjectspythonProjectmain.py", line 3, in <module>
print (next(iterator_))
TypeError: 'list' object is not callable
我究竟做错了什么?字符串是一个可迭代对象。我输入由逗号分隔的字符,没有空格。
回答
您需要将引用传递给map(). 对于您的用例,您可以将lambda 表达式用作:
numbers = '1,2,3,4'
iterator_ = map(lambda x: x.split(','), numbers)
print(next(iterator_))
# print: ['1']
另一个带有外部函数的例子:
def get_number(s):
return s.split(',')
iterator_ = map(get_number, numbers)
但是,如果您想从字符串中获取数字,则不需要map此处。您需要直接str.split()用作:
>>> numbers = '1,2,3,4'
>>> numbers.split(',')
['1', '2', '3', '4']
此外,如果您想对每个数字str进行int类型转换,则可以将其map用作:
>>> list(map(int, numbers.split(',')))
[1, 2, 3, 4]