在 Python 中检查对象是否可迭代


在这篇文章中,我们将看到如何在 Python 中检查对象是否可迭代。

Python 中的可迭代对象是什么?

可迭代对象是包含一系列元素的对象,可以使用简单的for循环对其进行迭代。列表、元组和字符串是此类对象的示例。

这些类的对象具有与之关联的__iter__或魔法功能。__getitem__这些函数初始化对象的元素并允许我们一个一个地访问这些元素。

如何检查对象在 Python 中是否可迭代?

现在让我们讨论如何在 Python 中检查对象是否可迭代。下面讨论不同的方法。

使用该iter()函数检查对象在 Python 中是否可迭代

iter()函数接受一个对象并返回一个迭代器对象。如果提供的对象不可迭代,则TypeError抛出 a。我们可以将此函数与tryandexcept语句一起使用。

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会执行块中的代码。

iter()函数因 Python 2 中的字符串而失败。

使用for循环检查对象在 Python 中是否可迭代

如前所述,我们可以使用for循环来遍历一个可迭代对象来访问元素。如果这在对象中是不可能的,则会引发异常并且该对象不可迭代。

我们可以像在前面的示例中那样使用tryand块来检查对象在 Python 中是否可以使用循环进行迭代。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()函数检查对象在 Python 中是否可迭代

isinstance()函数用于检查对象是否是某个指定类的实例。我们可以使用这个函数来检查对象是否在 Python 中是可迭代的。

我们可以通过检查它们是否属于在模块Iterable中找到的类来检查对象。collections.abc该模块包含并定义了抽象基类的格式。它在 Python 2.6 及更高版本中可用。Python 3.3以下,可以直接在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/