Python 如不用collections库,如何判断对象是否可迭代?

简介: Python 如不用collections库,如何判断对象是否可迭代?

python中常见的可迭代对象有:列表、元组、字典、字符串、生成器、迭代器等等。

判断一个对象是否可迭代? 通常都会导入collections库,代码如下:

>>> from collections import Iterable
>>> isinstance("123", Iterable)
True
>>> isinstance(123, Iterable)
False
>>> isinstance([1,2,3], Iterable)
True



那么如果不用collections库,如何判断呢?


方法一: 内置函数 hasattr()

即判断对象有否“__iter__”属性

>>> s = "123"
>>> hasattr(s, "__iter__")
True
>>> s = 123
>>> hasattr(s, "__iter__")
False
>>> hasattr([1,2,3], "__iter__")
True
>>> 


方法二: 内置函数 iter() 或 enumerate()

即判断对象能否被转换为iter对象

>>> def isIter(s):
  try:
    res = True
    t = iter(s)
  except:
    res = False
  return res
>>> isIter('123')
True
>>> isIter(123)
False
>>> 


附: hasattr() 详解

>>> hasattr(int,'__bool__')
True
>>> hasattr(int,'__iter__')
False
>>> dir(int)[:10]
['__abs__', '__add__', '__and__', '__bool__', '__ceil__',
 '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__']
>>>
>>> '__bool__' in dir(int)
True
>>> '__iter__' in dir(int)
False



方法三:内置函数isinstance()

在第二参数的元组里罗列出所有的可迭代对象,缺点是可能列不全

>>> obj = None
>>> isinstance(obj, (str,list,dict,tuple,set,range,type(_ for _ in[])))
False
>>> obj = 'string'
>>> isinstance(obj, (str,list,dict,tuple,set,range,type(_ for _ in[])))
True
>>> 
目录
相关文章
|
4天前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
13 1
|
1天前
|
机器学习/深度学习 数据挖掘 PyTorch
10个非常有用的Python库,你知道几个?
这些库覆盖了数据科学、机器学习、Web开发和其他领域,使Python成为一个多用途的编程语言。它们在各种项目和领域中都非常有用。
15 2
|
2天前
|
SQL 关系型数据库 数据库连接
使用 Python 访问数据库的基本方法
【5月更文挑战第12天】在Python中操作数据库涉及安装数据库驱动(如mysql-connector-python, psycopg2, pymongo)、连接数据库、执行查询/更新、处理结果集及关闭连接。使用ORM(如SQLAlchemy)可简化操作。通过上下文管理器(with语句)能更好地管理资源和错误。注意根据实际需求处理事务、错误和安全性,例如使用SSL连接。
13 2
|
3天前
|
JSON 监控 调度
局域网管理软件的自动化任务调度:Python 中的 APScheduler 库的应用
使用 Python 的 APScheduler 库可简化局域网管理中的自动化任务调度。APScheduler 是一个轻量级定时任务调度库,支持多种触发方式如间隔、时间、日期和 Cron 表达式。示例代码展示了如何创建每 10 秒执行一次的定时任务。在局域网管理场景中,可以利用 APScheduler 定期监控设备状态,当设备离线时自动提交数据到网站,提升管理效率。
18 0
|
3天前
|
数据采集 数据可视化 数据挖掘
如何利用Python中的Pandas库进行数据分析和可视化
Python的Pandas库是一种功能强大的工具,可以用于数据分析和处理。本文将介绍如何使用Pandas库进行数据分析和可视化,包括数据导入、清洗、转换以及基本的统计分析和图表绘制。通过学习本文,读者将能够掌握利用Python中的Pandas库进行高效数据处理和可视化的技能。
|
4天前
|
C++ Python
Python中的类与对象
Python中的类与对象
6 1
|
4天前
|
机器学习/深度学习 自然语言处理 算法
Gensim详细介绍和使用:一个Python文本建模库
Gensim详细介绍和使用:一个Python文本建模库
15 1
|
5天前
|
JSON 数据格式 Python
Python 的 requests 库是一个强大的 HTTP 客户端库,用于发送各种类型的 HTTP 请求
【5月更文挑战第9天】`requests` 库是 Python 中用于HTTP请求的强大工具。要开始使用,需通过 `pip install requests` 进行安装。发送GET请求可使用 `requests.get(url)`,而POST请求则需结合 `json.dumps(data)` 以JSON格式发送数据。PUT和DELETE请求类似,分别调用 `requests.put()` 和 `requests.delete()`。
16 2
|
5天前
|
JSON 数据格式 索引
python之JMESPath:JSON 查询语法库示例详解
python之JMESPath:JSON 查询语法库示例详解
14 0
|
13天前
|
机器学习/深度学习 边缘计算 TensorFlow
【Python机器学习专栏】Python机器学习工具与库的未来展望
【4月更文挑战第30天】本文探讨了Python在机器学习中的关键角色,重点介绍了Scikit-learn、TensorFlow和PyTorch等流行库。随着技术进步,未来Python机器学习工具将聚焦自动化、智能化、可解释性和可信赖性,并促进跨领域创新,结合云端与边缘计算,为各领域应用带来更高效、可靠的解决方案。