好文档 - 专业文书写作范文服务资料分享网站

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仍指向同一内存。

python序列

数据结构Python中常见的数据结构可以统称为容器(container)。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。序列序列中的美个元素被分配一个序号——即元素的位置,也称为索引。python中包含6种内建的序列,包括列表、元组、字符串、Unicode字符串、buffer对象、xrange对象常用的数据结构:字
推荐度:
点击下载文档文档为doc格式
1nnnl16ezs4x67j2pwjr92i2p9mey901dq8
领取福利

微信扫码领取福利

微信扫码分享