python序列

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据结构Python中常见的数据结构可以统称为容器(container)。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。序列序列中的美个元素被分配一个序号——即元素的位置,也称为索引。python中包含6种内建的序列,包括列表、元组、字符串、Unicode字符串、buffer对象、xrange对象常用的数据结构:字符串、列表、元组、字典、集合(1)字符串(str)python中,单引号或者双引号中的数据即为字符串。字符串属于不可改变对象(具体描述见下)(2)列表(list)列表是一个任意类型、任意嵌套的对象的位置相关的有序集合,没有固定的大小。列表中,每个元素可以是任意的类型,其语法标志是[](3)元组(tuple)元组近似于列表,二者最大的区别在于,列表可以修改,而元组不能,因此可以说元组是不可更改的列表。元组的这一特征类似于字符串。元组的语法标志是()元组的值一旦确定,不可更改。当元组值存在一个元素时,必须要在后面加上一个逗号“,”,否则对象将表现为元素的数据类型(4)字典(dict)字典是python中唯一内建的映射类型,映射即通过名字来引用值的数据结构。字典编写在大括号{}中,包含一系列的“键:值”对字典的索引操作和序列具有相同的语法,但是方括号中的元素是键,而不是相对位置。(5)集合(set)集合是有序列(或者其他可迭代的对象)构建的,它们主要用于检查成员资格。集合没有特殊的表现形式,而是用set()来转换集合。在python2中,set表现形式如下而在python3中,set表现形式则如下:序列间的嵌套序列间可以相互嵌套,即序列的元素可以是其他序列,如下所示:可变对象和不可变对象在Python中,一切都是对象,Python中不存在值传递,只存在引用传递(也可以认为是传址)。根据对象的可变性,可以将Python对象分为两类:可变(mutable)对象和不可变(immutable)对象。不可变(immutable)对象:对象的内容(值)不可变,当尝试改变对象内容的时候,会创建一个新的对象;也就是说对象的身份(id(),即对象的地址)会发生变化例如:数值类型(int、float、bool、long),字符串(str),元组(tuple)对以下4种数据类型(int,float,str,tuple),分别改变其内容:运行结果如下:由上图可知,当尝试改变不可变对象的内容时,将会开辟新的内存来存放更改后的内容。可变(mutable)对象:对象的内容可变,当改变对象内容的时候,对象的身份(id(),即对象的地址)不会变化例如:列表(list)、字典(dict)、集合(set)对以下2种数据类型(list,dict),分别改变其内容:运行结果如下:由上图可知,对于可变对象,改变对象的内容,并不需改变对象的地址a=a+a和a+=a对于不可变对象而言,a=a+a和a+=a是完全一样的结果。但是对于可变对象而言,a=a+a和a+=a是两种不同的运算例1:一个列表myList=[“1”,”2”,”3”],经过a=a+a运算后的结果如下:python中,参数传递只存在引用传递(即传址),因此a会的myList的地址,经过a=a+a运算后,a的值改变,所指向值的地址改变,可见运算后的值用一个新的内存空间存放,a此时指向新的内存,原来的地址空间依然存在,因此myList的值并没有改变。a指向新的内存,myList仍指向原内存经过a+=a的运算后,a的值改变,然而指向值的地址没有改变,可见运算后的值被写回原地址,因此myList的值也跟着改变在原内存上更改值,a和myList仍指向同一内存。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功