不能在map()上使用len()

时间:2014-02-28 04:54:20

标签: python

c = input("Enter a list of number seperate by ','\n")
d = map(int, c.split(","))

print(sum(d)/len(d))

解释器说类型映射的对象没有长度。我怎么知道用户输入了多少个号?

2 个答案:

答案 0 :(得分:2)

您正在使用 python3 ,其中map不再返回list,而是map个对象。 使用list(map(...

将其明确转换为列表

答案 1 :(得分:1)

您需要将map对象转换为list,因为map就像一个生成器,只在需要时产生值

c = input("Enter a list of number seperate by ','\n")
d = list(map(int, c.split(",")))
print(sum(d)/len(d))

或者,可能更具可读性,使用列表理解:

c = input("Enter a list of number seperate by ','\n")
d = [int(x) for x in c.split(",")]
print(sum(d)/len(d))

或者,您可以稍微重新构建代码,因为str.split()确实为您提供了一个列表:

c = input("Enter a list of number seperate by ','\n").split(',')  # <-- split here
d = map(int, c)
print(sum(d)/len(c))  # <-- len(c) instead of len(d)