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

Boa*_*oaz 22 python iterable

可能重复:
在Python中,如何确定对象是否可迭代?

如何检查Python对象是否支持迭代,又称迭代对象(参见定义)

理想情况下,我希望函数类似于isiterable(p_object)返回True或False(建模后isinstance(p_object, type)).

use*_*312 65

您可以使用isinstance和检查这个collections.Iterable

>>> from collections import Iterable
>>> l = [1, 2, 3, 4]
>>> isinstance(l, Iterable)
True
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`str`也是可迭代的.因此,如果您正在考虑`tuple,list,set` ..最好只检查这3种类型 (2认同)

Xav*_*osa 7

试试这个代码

def isiterable(p_object):
    try:
        it = iter(p_object)
    except TypeError: 
        return False
    return True
Run Code Online (Sandbox Code Playgroud)


S.L*_*ott 5

你不"检查".你假设.

try:
   for var in some_possibly_iterable_object:
       # the real work.
except TypeError:
   # some_possibly_iterable_object was not actually iterable
   # some other real work for non-iterable objects.
Run Code Online (Sandbox Code Playgroud)

请求宽恕比要求许可更容易.

  • 在"实际工作"中捕获任何"TypeError",而无法区分这两者. (5认同)
  • 我不同意这一点。很有可能你会想要做 `if not iterable: [obj]` 来断言某些东西总是可迭代的。更可能使代码更清晰。 (2认同)