TypeError:’map’ 类型的对象在 Python 中没有 len()

TypeError:’map’ 类型的对象在 Python 中没有 len()

TypeError: object of type ‘map’ has no len() in Python

当我们将map对象传递给len()函数时,会出现 Python “TypeError: object of type ‘map’ has no len()”。要解决该错误,map
请先将对象转换为列表,然后再将其传递给
len,例如len(list(my_map))

类型映射的类型错误对象没有 len

下面是错误如何发生的示例。

主程序
my_list = ['1', '2', '3'] my_map = map(int, my_list) # ⛔️ TypeError: object of type 'map' has no len() print(len(my_map))

我们不能将map对象传递给len()函数,但我们可以将其转换为 a
list并获取列表的长度。

主程序
my_list = ['1', '2', '3'] # ✅ convert to list my_new_list = list(map(int, my_list)) print(len(my_new_list)) # 👉️ 3

列表类接受一个可迭代对象并返回一个列表对象

请注意,将map对象传递给list类会耗尽迭代器。

主程序
my_list = ['1', '2', '3'] my_map = map(int, my_list) print(list(my_map)) # 👉️ [1, 2, 3] print(list(my_map)) # 👉️ []

所以如果你将地图对象转换为列表,直接做,不要在多个地方做。

map()函数将一个函数和一个可迭代对象作为参数,并使用可迭代对象的每个项目调用该函数。

当我们将一个对象传递给
len()函数时,该对象的
_ _ len _ _ ()
方法就会被调用。

您可以使用该dir()函数打印对象的属性并查找__len__属性。

主程序
my_list = ['1', '2', '3'] my_map = map(int, my_list) print(dir(my_map))

或者您可以使用try/except语句进行检查。

主程序
my_list = ['1', '2', '3'] my_map = map(int, my_list) try: print(my_map.__len__) except AttributeError: # 👇️ this runs print('object has no attribute __len__')

We try to access the object’s __len__ attribute in the try block and if an
AttributeError is raised, we know the object doesn’t have a __len__
attribute and cannot be passed to the len() function.

The len() function
returns the length (the number of items) of an object.

main.py
my_list = ['apple', 'banana', 'kiwi'] result = len(my_list) print(result) # 👉️ 3
The argument the function takes may be a sequence (a string, tuple, list, range or bytes) or a collection (a dictionary, set, or frozen set).

If you aren’t sure what type a variable stores, use the built-in type() class.

main.py
my_list = ['1', '2', '3'] print(type(my_list)) # 👉️ <class 'list'> print(isinstance(my_list, list)) # 👉️ True my_map = map(int, my_list) print(type(my_map)) # 👉️ <class 'map'> print(isinstance(my_map, map)) # 👉️ True

The type class returns
the type of an object.

The isinstance
function returns True if the passed in object is an instance or a subclass of
the passed in class.

Conclusion #

当我们将map对象传递给len()函数时,会出现 Python “TypeError: object of type ‘map’ has no len()”。要解决该错误,map
请先将对象转换为列表,然后再将其传递给
len,例如len(list(my_map))