本文阅读的代码实现了将输入的数字转化为列表,输入的数字中的每一位按照从左到右的顺序成为列表中的一项。本文阅读的代码片段来自30-seconds-of-python。digitizedefdigitize(n):returnlist(map(int,str(n)))#EXAMPLESdigitize(123)#[1,2,3]这个函数的主要逻辑是先把输入的数字转成字符串,然后使用map函数将字符串依次转化为int类型,最后转化为列表。为什么输入的数字经过这个转换后可以得到一个列表呢?这是因为Python中的str是可迭代类型。所以str可以使用map函数,map返回的是迭代器,也是可迭代类型。最后,使用此迭代器构建列表。Python判断一个对象是否可迭代。网上常见的判断方式是使用collections.abc(该模块在3.3之前是collections的一部分)模块的Iterable类型。fromcollections.abcimportIterableisinstance('abc',Iterable)#Trueisinstance(map(int,a),Iterable)#虽然True在当前场景下不是问题,但是根据官方文档的描述,检测是否一个对象是可迭代的唯一可靠的方法是调用iter(obj)。classcollections.abc.IterableABC用于提供__iter__()方法的类。检查isinstance(obj,Iterable)检测注册为Iterable或具有__iter__()方法的类,但它不检测使用__getitem__迭代的类()方法。确定对象是否可迭代的唯一可靠方法是调用iter(obj)。>>>iter('abc')
