Python数据结构的总结—列表、元组与字典

Python中常用的数据结构形式有:列表、元组、字典等。本文主要针对这几天以来对于数据结构方面的学习的总结。总结内容可能只是包含一些基础知识以及在学习过程中,自己发现的一些细节问题,所以内容并不全面,算是对基础学习的一个巩固和对一些细节认识的补充。

列表和元组是最为常用的两种序列形式,对于初学者来说,可能会经常提到python的序列这个概念,首先要明确序列本身不是一个既定的数据结构,只是该方面的一个称呼,所以在阅读书籍时,要对一些专有名词加以把握。

列表和元组的最大的不同之处在于,列表可以修改,而元组不能修改。所以在选择数据结构时,要考虑后期使用特点来加以针对性选择使用。而字典,更像是c语言中的指针,由键和值组成,其中键我们可以理解成指针,值就是被值对象。从字面意思也可以理解,“字典”这一数据结构,就如同我们使用的字典一样,是共查阅的,而不是像书籍一样,需要从第一页顺序的完整阅读下去的,因此是一种便捷的数据库形式。同时,字典内的值可以是更小的字典,可以进行嵌套使用。当我们需要输出字典中某一具体值时,可以采用多级表达形式,例如下面所示。

#创建一个数据库

people = {

'Alice':{

'phone':'2341',

'addr':'Foo drive 23'

},

'Beth':{

'phone':'9102',

'addr':'Bar street 42'

},

'Cecil':{

'phone':'3158',

'addr':'Baz avenue 90'

}

}

当我们想要输出Alice的电话号码时,输出项可写成people[Alice][phone]。也就是说键的书写顺序是按级别降序排列。三级四级依次排开即可。

无论是列表、元组、还是字典。若采用常规复制形式,及令a=b,都只是让a和b同时关联在一个列表、元组或者字典上,如果对a进行修改的话,实际上b也跟着发生变化,因为关联对象为同一个。为避免这种情况,需要将b关联到a的副本上,在此需要使用copy方法。注意,在字典的复制过程中,若字典内包含列表或元组等内容,采用copy只会关联表层内容,若对深层内容进行修改,仍存在关联对象为一个的问题,因此在字典的复制问题上,可能需要采用copy模块中的deepcopy。(在整理学习笔记时,突然想到,如果列表中包含列表,是不是有同样的问题,经过调试程序验证,发现上述问题是一致的,因此deepcopy的使用不限于字典)。所以可以得出结论,当数据结构出现嵌套关系,每一次复制,只是复制的根一级的数据结构,对于下一级数据结构的关联不发生变化,所以若想全部复制,则要使用deepcopy。

其他方法的使用,以及注意事项,就不在此进行叙述。本文只针对一些自学过程中觉得有意思的问题进行记录。希望对大家有所帮助,如有问题,请及时沟通。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180531G2243B00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券