最小化python 之 基本数据类型的转换2

时启发2024-05-14 23:36:23  135

上一篇,我们主要了解了数值(整型、浮点型和复数)与字符串的转换。看起来很简单,事实上也不复杂。今天,我们聊一下容器类基本数据类型(元组tuple,列表list,集合set和字典dict)的几个转换。先来看元组tuple与列表list之间的转换。从内置函数的角度看,tuple和list函数可以胜任这两项工作,且由于元组和列表都属于可迭代对象,他们之间的相互转换显而易见的容易。见图1:

图1 元组和列表的互相转换

在这里我们引入一个可迭代对象的概念,即iterable。与依赖索引,通过循环遍历的形式,来逐项访问容器类各元素的情况不同的是,可迭代对象对内部逐项元素,以类似开盲盒的形式,通过叫“下一个”、“下一个”,将一个个盲盒中的元素逐项展现出来。这里我们简单理解为循环遍历的一种简化形式即可。基于索引的遍历见图2。基于迭代的遍历见图3。

图2 基于索引的循环遍历

图3 基于迭代的遍历

我们知道集合set类的元素必须是唯一的,且内部排列顺序不确定,因此元组或者列表到集合的转换,通常为有损失的转换。比如元组a=(1,1,2,2,3,3,4,4)和列表b=['o','p','o','k'],通过set方法转换,结果见图4:

图4 将元组和列表转换为集合

当然,由于集合同样是可迭代对象,利用tuple和list函数将集合分别转换为元组和列表,转换不存在问题,见图5:

图5 集合到元素或列表的转换

由于字典内每一个元素都是一组键值对(见图6),通过调用list、tuple和set函数进行转换必然是有损的。需要注意的是,转换的结果的字典关键字部分对应的列表、元组和集合,见图7:

图6 一个字典及迭代

图7 字典到列表、元组和集合的转变

特别需要提醒的是字典的keys方法,返回的并不是列表、元组或集合之中的任一类型,而是字典视图对象,当字典改变时,这个字典视图对象同样会发生变化,也正因为如此,调用字典的keys方法比通过转换得到字典的关键字部分运行效率要,见图8:

图8 删除字典某一键值后,字典关键字视图对象随之改变

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/506520.html
0
最新回复(0)