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))
。
下面是错误如何发生的示例。
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.
my_list = ['apple', 'banana', 'kiwi'] result = len(my_list) print(result) # 👉️ 3
If you aren’t sure what type a variable stores, use the built-in type()
class.
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))
。