写点什么

Python 代码阅读(第 2 篇):数字转化成列表

用户头像
Félix
关注
发布于: 2021 年 08 月 04 日
Python代码阅读(第2篇):数字转化成列表

本篇阅读的代码实现了将输入的数字转化成一个列表,输入数字中的每一位按照从左到右的顺序成为列表中的一项。


本篇阅读的代码片段来自于30-seconds-of-python

digitize

def digitize(n):  return list(map(int, str(n)))
# EXAMPLESdigitize(123) # [1, 2, 3]
复制代码


该函数的主体逻辑是先将输入的数字转化成字符串,再使用map函数将字符串按次序转花成int类型,最后转化成list


为什么输入的数字经过这种转化就可以得到一个列表呢?这是因为 Python 中str是一个可迭代类型。所以str可以使用map函数,同时map返回的是一个迭代器,也是一个可迭代类型。最后再使用这个迭代器构建一个列表。

Python 判断对象是否可迭代

目前网络上的常见的判断方法是使用使用collections.abc(该模块在 3.3 以前是collections的组成部分)模块的Iterable类型来判断。


from collections.abc import Iterableisinstance('abc', Iterable) # Trueisinstance(map(int,a), Iterable) # True
复制代码


虽然在当前场景中这么使用没有问题,但是根据官方文档的描述,检测一个对象是否是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).


>>> iter('abc')<str_iterator object at 0x10c6efb10>
复制代码


发布于: 2021 年 08 月 04 日阅读数: 14
用户头像

Félix

关注

还未添加个人签名 2018.05.04 加入

还未添加个人简介

评论

发布
暂无评论
Python代码阅读(第2篇):数字转化成列表