python入门学习-列表和元组(1)

 

 

      数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合。这些数据元素可以是数字或者字符,甚至可以是其他数据结构。

在python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——即元素的位置,也称为索引。第一个索引是0,第二个是1,以此类推。

1.1序列概览

       python包含6种內建的序列,最常用的两种类型是:列表和元组。其他的內建序列类型有字符串、Unicode字符串、buffer对象和xrang对象。

       列表和元组主要区别在于,列表可以修改,元组不能修改。如果根据要求来添加元素,那么列表可能会更好用;而出于某些原因,序列不能修改的时候,

使用元组则更为合适。一般来说,在编程中,几乎所有的情况下都可以用列表替代元组(注意一个例外的情况:使用元组作为字典的键,因为键不可修改,所以不能使用列表)。

        用序列表示数据库中一个人的信息——第1个元素是姓名,第二个元素是年龄(列表的各个元素通过逗号分隔,写在方括号中)。序列可以包含其他的序列,

所以可以构建一个人员信息的列表,这个列表就是你的数据库。

注:python中还有一种名为容器(contaier)的数据结构。容器基本上是包含其他对象的任意对象。序列(例如列表和元组)和映射(例如字典)是两类主要

的容器。序列中的每个元素都有自已的编号,而映射中的每个元素则有一个名字(也称为键)

1.2通用序列操作

      所有序列可以进行特定的操作。这些操作包括:索引(indexing)、分片(slicing)、加(adding)、乘(multiplying)以及检查某个元素是否属于序列的成员

(成员资格)。除此之外,python还有计算序列长度、找出最大元素和最小元素的內建函数。

1.2.1索引

      序列中的所有元素都是有编号的——从0开始递增。这些元素可以通过元素分别访问,如下图所示

      注:字符串就是一个由字符组成的序列。索引0指向第一个元素,在这个列子中就是字母H。

可以通过索引获取元素。所有序列都可以通过这种方式进行索引。使用负数时,python会从右边,也就是从最后1个元素开始计数。最后1个元素的编号是-1(不是

-0,-0会和第一个元素重合):

      如果一个函数调用返回一个序列,那么可以直接对结果进行索引操作。例如,假设你只对用户输入年份的第四个数字感兴趣,那么,可以进行如下操作:

      代码清单1-2-1-1是一个示例程序,要求输入年、月(1-12的数字)、日(1-31),然后打印出相应的月份名称等等

      代码清单1-2-1-1 索引示例

以下是程序执行的一部分结果:

最后一行是程序的输出

 1.2.2分片

分片操作是用来访问一定范围内的元素。分片通过冒号隔开的两个索引来实现:

第1个索引是要提取的第一个元素的编号,而最后的索引则是分片之后剩余部分的第一个元素的编号。见如下代码

简而言之就是第一个索引的元素包含在分片内,第二个则不包含在分片内

1.2.2.1优雅的捷径

如果分片包括序列结尾的元素,那么,只需置空最后一个索引即可:

这种方法也适用于序列开始的元素:

如果需要复制整个序列,可以将两个索引都置空

 

代码清单1-2-2-1是一个小程序,它会提示输入URL(假设它的形式为http://www.somedomainname.com),然后提取域名。

代码清单1-2-2-1 分片示例

以下是程序运行的示例:

1.2.2.2更大的步长

在普通的分片中,步长是1——分片操作就是按照这个步长逐个遍历序列的元素,然后返回开始和结束点之间的所有元素(显示步长)

如果步长被设置为比1大的数,那么就会跳过某些元素。例如,步长为2的分片包括的是从开始到结束每隔1个的元素。

前面提到的捷径也可以使用。如果需要将每4个元素中的第1个提取出来,那么只要将步长设置为4即可:

步长不能为0(0不会执行),但步长可以是负数,此时分片从右到左提取元素:

当使用一个负数作为步长时,必须让开始点(开始索引)大于结束点。对于正数步长,python会从序列的头部开始向右提取元素,直到最后一个元素;对于负数步长,则是从序列的尾部开始向左提取元素,直到第一个元素。

 

 

 

 

posted @ 2017-07-13 22:07  青天白日ROC  阅读(280)  评论(0编辑  收藏  举报