在这篇文章中,我们将看到如何在 Python 中检查对象是否可迭代。
可迭代对象是包含一系列元素的对象,可以使用简单的for循环对其进行迭代。列表、元组和字符串是此类对象的示例。
for
这些类的对象具有与之关联的__iter__或魔法功能。__getitem__这些函数初始化对象的元素并允许我们一个一个地访问这些元素。
__iter__
__getitem__
现在让我们讨论如何在 Python 中检查对象是否可迭代。下面讨论不同的方法。
iter()
该iter()函数接受一个对象并返回一个迭代器对象。如果提供的对象不可迭代,则TypeError抛出 a。我们可以将此函数与tryandexcept语句一起使用。
TypeError
try
except
在try块中,我们可以添加我们认为可能引发异常的代码,在except块中,我们编写在引发异常时需要执行的代码。我们可以将带有iter()函数的代码放在try块中,以检查对象在 Python 中是否可迭代。
例如,
Using the iter function a = [7,6,2,3,4] b = 5 try: print(iter(a)) except: print("Object is not an iterable") try: print(iter(b)) except: print("Object is not an iterable")
输出:
<list_iterator object at 0x0000023BA8DF4688> Object is not an iterable
在上面的例子中,我们初始化了一个列表和一个整数。该列表是一个可迭代的,因此list_iterator创建了一个。整数不是可迭代的并且会引发异常,因此except会执行块中的代码。
list_iterator
该iter()函数因 Python 2 中的字符串而失败。
如前所述,我们可以使用for循环来遍历一个可迭代对象来访问元素。如果这在对象中是不可能的,则会引发异常并且该对象不可迭代。
我们可以像在前面的示例中那样使用tryand块来检查对象在 Python 中是否可以使用循环进行迭代。except``for
except``for
我们将尝试迭代对象,如果引发异常,则except块中的代码将执行,指示对象不可迭代。
请参阅下面的代码。
Using the for loop a = [7,6,2,3,4] b = 5 try: for i in a: print(i) except: print("Object is not an iterable") try: for i in b: print(i) except: print("Object is not an iterable")
7 6 2 3 4 Object is not an iterable
正如上面示例中所预期的那样,except当我们迭代一个整数时,块中的代码就会被执行。
isinstance()
该isinstance()函数用于检查对象是否是某个指定类的实例。我们可以使用这个函数来检查对象是否在 Python 中是可迭代的。
我们可以通过检查它们是否属于在模块Iterable中找到的类来检查对象。collections.abc该模块包含并定义了抽象基类的格式。它在 Python 2.6 及更高版本中可用。Python 3.3以下,可以直接在collections模块中找到。
Iterable
collections.abc
collections
Iterable检查给定对象是否具有与之关联的魔术__iter__功能。对于具有__getitem__魔术功能而不是__iter__.
我们在下面使用这种方法。
Using the isinstance function from collections.abc import Iterable a = [7,6,2,3,4] b = 5 if isinstance(a, Iterable): print("Object is iterable") else: print("Object is not iterable") if isinstance(b, Iterable): print("Object is iterable") else: print("Object is not iterable")
Object is iterable Object is not iterable
最后,我们在本教程中讨论了三种方法来检查对象在 Python 中是否可迭代。前两种方法使用tryandexcept块。我们尝试执行可迭代对象可以执行的操作,如果引发异常,我们知道它是不可迭代的。
在第一种方法中,我们使用iter()返回迭代器的函数。for我们尝试在第二种方法中使用循环来迭代对象。在第三种方法中,我们使用isinstance()函数并检查对象是否是模块中Iterable类的实例。collections.abc
原文链接:https://codingdict.com/