【问题标题】:How do we know if an item can be iterated [duplicate]我们如何知道一个项目是否可以迭代[重复]
【发布时间】:2020-09-30 11:14:42
【问题描述】:

我阅读了一些非常古老的答案(10 年),他们说在 python 2.x 中,这种迭代质量只是假定的。

但是像 3.9 这样的现代 python 呢?我可以假设一个项目和对象可以迭代吗?

阿比

【问题讨论】:

标签: python python-3.x


【解决方案1】:

请参考下面的代码并传递你的对象来判断它是否是可迭代的。

def isiterable(obj):
  try:
     iter(obj)
     return True
  except TypeError:
     return False

美好的一天!

【讨论】:

    【解决方案2】:

    闪亮的新typing 模块正是为此而生。它包含所有类型。

    from typing import Iterable
    isinstance([], Iterable) # True
    isinstance(None, Iterable) # False
    

    【讨论】:

    • typing 不存在用于运行时检查。较旧的collections.abc 存在于此,例如collections.abc.Iterable.
    • 基于collections.abs.Iterable 文档,我们不应该将isinstance 用于可迭代对象,因为它无法识别旧样式的可迭代对象。看来@Prince 的回答是推荐的方式。
    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多