购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

6-1 认识列表(list)

Python的 列表 功能除了可以存储相同数据类型,例如: 整数 浮点数 字符串 ,我们将每一种数据称 元素 。一个列表也可以存储不同数据类型,例如: 列表 内同时含有 整数 浮点数 字符串 ,甚至一个 列表 也可以有其他 列表、元组 (tuple,第8章内容)或是 字典 (dict,第9章内容)等当作是它的元素。因此,Python工作的能力范围,将比其他程序语言强大。

6-1-1 列表基本定义

定义列表的语法格式如下:

    name_list = [元素1, …… , 元素n,]  #name_list是假设的列表名称

基本上列表的每一组数据称 元素 ,这些元素放在中括号[ ]内,彼此用逗号“,”隔开,上述 元素n 右边的“,”可有可无,这是Python设计编译程序人员的贴心设计,因为当元素内容数据量够长时,我们可能会一行放置一个元素,有的设计师处理每个元素末端习惯加上“,”符号,处理最后一个元素n时有时也习惯加上此符号,例如可参考6-6-2节。如果要打印列表内容,可以用print()函数,将列表名称当作变量名称即可。

实例1: NBA球员James前5场比赛得分,分别是23、19、22、31、18,可以用下列方式定义列表。

实例2: 为所销售的水果,苹果、香蕉、橘子创建列表,可以用下列方式定义列表。

在定义列表时,元素内容也可以使用中文。

实例3: 为所销售的水果,苹果、香蕉、橘子创建中文元素的列表,可以用下列方式定义列表。

实例4: 列表内可以有不同的数据类型,例如:在实例1的James列表,增加第1笔元素,放他的全名。

程序实例ch6_1.py: 定义列表同时打印,最后使用type()列出 列表 数据类型。

执行结果

6-1-2 读取列表元素

我们可以用列表名称与索引读取列表元素的内容,在Python中元素是从索引值0开始配置。所以如果是列表的第一组元素,索引值是0,第二笔元素索引值是1,其他以此类推,如下所示:

    name_list[i]  #读取索引i的列表元素

程序实例ch6_2.py: 读取列表元素的应用。

执行结果

上述程序经过第2行的定义后,列表索引值的概念如下:

所以程序第3行~第7行,可以得到上述执行结果。其实我们也可以将2-9节等多重指定概念应用在列表。

程序实例ch6_3.py: 一个传统处理列表元素内容方式,与Python多重指定概念的应用。

执行结果

上述程序第11行让整个Python设计简洁许多,这是Python高手常用的程序设计方式,在上述设计中第11行的多重指定变量的数量需与列表元素的个数相同,否则会有错误产生。其实懂得用这种方式设计,才算是真正了解Python语言的基本精神。

6-1-3 列表切片(list slices)

在设计程序时,常会需要取得列表 前几个元素 后几个元素 某区间元素 或是 依照一定规则排序的元素 ,所取得的系列元素也可称 子列表 ,这个概念称 列表切片 (list slices),此时可以用下列方法。

    name_list[start:end]  #读取从索引start到(end-1)索引的列表元素
    name_list[:n]         #取得列表前n名
    name_list[n:]         #取得列表索引n到最后
    name_list[-n:]        #取得列表后n名
    name[:]               #取得所有元素,将在6-6-2节解说

下列是读取区间,但是用step作为每隔多少区间再读取。

    name_list[start:end:step]
                       #每隔step,读取从索引start到(end-1)索引的列表元素

程序实例ch6_4.py: 列出特定区间球员的得分子列表。

执行结果

程序实例ch6_5.py: 列出球队前3名队员、从索引1到最后队员与后3名队员子列表。

执行结果

6-1-4 列表索引值是-1

在列表使用中,如果索引值是-1,代表是最后一个列表元素。

程序实例ch6_6.py: 列表索引值是-1的应用,由下列执行结果可以得到列出了各列表的最后一个元素。

执行结果

其实在Python中索引-1代表最后1笔元素,-2代表最后第2笔元素,其他负索引概念可以此类推。

6-1-5 列表统计资料、最大值max()、最小值min()、总和sum()

Python有内建一些执行统计运算的函数,如果列表内容全部是数值则可以使用max()函数获得列表的最大值,min()函数可以获得列表的最小值,sum()函数可以获得列表的总和。如果列表内容全部是字符或字符串则可以使用max()函数获得列表的Unicode码值的最大值,min()函数可以获得列表的Unicode码值最小值。sum()则不可使用在列表元素为非数值情况。

程序实例ch6_7.py: 计算James球员5场的最多得分、最少得分和5场的得分总计。

执行结果

上述我们很快地获得了统计信息,各位可能会想,如果我们在列表内含有字符串,例如:程序实例ch6_1.py的James列表,这个列表第一组元素是字符串,如果这时仍然直接用max(James)会有错误的。

碰上这类的字符串我们可以使用6-1-3节方式,用切片方式处理,如下所示。

程序实例ch6_8.py: 重新设计ch6_7.py,但是使用含字符串元素的James列表。

执行结果

6-1-6 列表个数len()

程序设计时,可能会增加元素,也有可能会删除元素,时间久了即使是程序设计师也无法得知列表内剩余多少元素,此时可以借用本节的len()函数,这个函数可以获得列表的元素个数。

程序实例ch6_9.py: 重新设计ch6_7.py,获得场次数据。

执行结果

6-1-7 更改列表元素的内容

可以使用列表名称和索引值更改列表元素的内容。

程序实例ch6_10.py: 修改James第5场比赛分数。

执行结果

这个概念可以用在更改整数数据,也可以修改字符串数据。

6-1-8 列表的相加

Python允许列表相加,相当于将列表结合。

程序实例ch6_11.py: 一家汽车经销商原本可以销售Toyota、Nissan、Honda,现在并购一家销售Audi、BMW的经销商,可用下列方式设计销售品牌。

执行结果

6-1-9 删除列表元素

可以使用下列方式删除指定索引的列表元素:

    del name_list[i]  #删除索引i的列表元素

程序实例ch6_12.py: 如果NBA勇士队主将阵容有5名,其中一名队员Bell离队了,可用下列方式设计。

执行结果

以这种方式删除列表元素最大的缺点是,元素删除后我们无法得知删除的是什么内容。当设计网站时,可能想将某个人从VIP客户降为一般客户,采用上述方式删除元素时,我们就无法再度取得所删除的元素数据,笔者在6-3-3节会介绍另一种方式删除数据,删除后我们还可善加利用所删除的数据。又或者你设计一个游戏,敌人是放在列表内,采用上述方式删除所杀死的敌人时,我们就无法再取得所删除的敌人元素数据,如果我们可以取得的话,可以在杀死敌人坐标位置放置庆祝动画 。

6-1-10 列表为空列表的判断

如果想创建一个列表,可以暂时不放置元素,可使用下列方式声明。

    name_list = [ ]  #这是空的列表

程序实例ch6_13.py: 删除列表元素的应用,这个程序基本上会用len()函数判断列表内是否有元素数据,如果有则删除索引为0的元素,否则列出列表内没有的元素。 k/ibNgerTpPcC2W1yVsjnSp29Q5vlyZjPlA9HyEnvnoMiDMsqIIG31tcZU+HdByx

执行结果
点击中间区域
呼出菜单
上一章
目录
下一章
×