为什么在使用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]


以上是为什么在使用map函数时出现TypeError'list'对象不可调用?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>