人生苦短,我学python!
前沿
在说到python数据类型时,就曾多次提到这个可迭代类型,它到底是个什么神秘的事物呢?今天我们就来揭开这面纱。
Python日常(3):字符串的创建、增加(追加、局部添加)、修改、删除(整体、特定字符)_Chandni_小月月的博客-CSDN博客
Python日常(4):集合的创建、增加、修改、删除_Chandni_小月月的博客-CSDN博客
Python日常(5):元组的创建、增加、修改、删除_Chandni_小月月的博客-CSDN博客
Python日常(6):列表的创建、增加(追加、局部添加)、修改、删除_Chandni_小月月的博客-CSDN博客
Python日常(7):字典的创建、增加、修改、删除_Chandni_小月月的博客-CSDN博客
** 我是chandni,关注我,不迷路!**
1.常见的可迭代类型及检验方式
在我们所熟知的数据类型中,字符串、集合、元组、列表、字典都属于可迭代类型。当然对于较高级的数据类型例如:队列、栈、顺序字典、名称元组都是可迭代类型,但这不在本次讲述范围内,就不过多介绍。对于可迭代类型来讲,还是比较难以理解的,但掌握上述所列举的数据类型,基本上能解决95%以上的问题。
Python中任意的对象,只要它定义了可以返回一个迭代器的
__iter__
方法,或者定义了可以支持下标索引的
__getitem__
方法,那么它就是一个可迭代对象。这属于面向对象中的内容了,要想真正理解可迭代对象首先要理解迭代器,理解迭代器就要理解生成器……是不是有一种想下车的准备。(这不是上幼儿园的车,我要下去!!)相信读者应该也能理解了这不是一时半会能讲清楚的。不过后续都会慢慢更新的,相信你到时候回来再看,会有一种豁然开朗的感觉。
讲了那么多可迭代类型,那哪些是不可迭代类型呢?常见的如整型、浮点型、复数、分数等。
** 问题:**
** ** 这也是我今天才知道的,从3.3之后Iterable被纳入到了collections.abc里,原本的collections已经不再支持了。
另外须注意的是,可迭代类型大多数为不可哈希类型(也就是id不会变的数据类型),但字符串是迭代类型同样也是可哈希类型。其余上述所列举的都是不可哈希类型(元组也是不可哈希的哦,虽然它不能被更改,大家可以想一下为什么,关于是否可哈希后续文章会讲到)。
2.应用场景
前面我们已经知道了,何为可迭代类型,那通常用在什么地方呢?
其他是数据类型读者也可以用同样的方式查看一下具体情况,肯定都是set(iterable)的形式。其实这便是它的妙用所在,你可以想象如果你初始化一个只包含单一字符的集合,需要一个字符一个字符输入且要加上引号,这是一个痛苦的过程,也不符合python便捷、简单的初衷。可迭代类型对于这种问题的优越性是不言自明的,也是其主要的应用场景,当然对于自定义的可迭代对象,其妙用就更多了,不过这不在该模块讲述范围内,就不过多叙述。
作者的话
拖到了本周的最后一天,加更的承诺终于兑现了,不说了,玩去了!!!
**我是chandni,关注我,不迷路! **
版权归原作者 Chandni. 所有, 如有侵权,请联系我们删除。