Python 代码阅读(第 2 篇):数字转化成列表
本篇阅读的代码实现了将输入的数字转化成一个列表,输入数字中的每一位按照从左到右的顺序成为列表中的一项。
本篇阅读的代码片段来自于30-seconds-of-python。
digitize
该函数的主体逻辑是先将输入的数字转化成字符串,再使用map
函数将字符串按次序转花成int
类型,最后转化成list
。
为什么输入的数字经过这种转化就可以得到一个列表呢?这是因为 Python 中str
是一个可迭代类型。所以str
可以使用map
函数,同时map
返回的是一个迭代器,也是一个可迭代类型。最后再使用这个迭代器构建一个列表。
Python 判断对象是否可迭代
目前网络上的常见的判断方法是使用使用collections.abc
(该模块在 3.3 以前是collections
的组成部分)模块的Iterable
类型来判断。
虽然在当前场景中这么使用没有问题,但是根据官方文档的描述,检测一个对象是否是iterable
的唯一可信赖的方法是调用iter(obj)
。
class collections.abc.IterableABC for classes that provide the iter() method.
Checking isinstance(obj, Iterable) detects classes that are registered as Iterable or that have an iter() method, but it does not detect classes that iterate with the getitem() method. The only reliable way to determine whether an object is iterable is to call iter(obj).
版权声明: 本文为 InfoQ 作者【Félix】的原创文章。
原文链接:【http://xie.infoq.cn/article/bc031ac3621f54d16ec9aaa6d】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论