python---------列表和元组,,数据结构是通过某种方


数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构。在python中最基本的数据结构是序列。序列中每一个元素被分配一个序号——即元素的位置,也称为索引。第一个元素的索引为0,第二个则是1,以此类推。

python包含6中内建序列,我们重点介绍的就是列表和元组。二者的区别是列表可以修改而元组不能修改。

通用序列操作,也就说我们要介绍的是针对序列的操作。所有的序列类型都可以进行某些特定的操作。这些操作包括:索引,分片,加,乘以及检查某个元素是否属于序列的成员。

1>索引

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

>>>greeting="Hello">>>greeting[0]‘H‘

字符串就是一个由字符组成的序列。这就是一个索引,可以通过索引获取元素,所有序列都可以通过这种方式进行索引。使用负数进行索引时,python会从右边进行计数,最右边一个元素的索引为-1.

字符串的字面值可以直接进行索引,而不需要一个变量引用他们。

>>>‘Hello‘[2]‘l‘>>>"Hello"[2]‘l‘>>>Hello[2]/这样引用时字符串必须添加引号Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>NameError:name‘Hello‘isnotdefined

如果一个函数调用返回一个序列,那么可以直接对返回的结果进行索引操作。

>>>nian=raw_input("year:")[3]year:2016>>>nian‘6‘>>>

2>分片

使用索引我们可以访问序列中的单个元素,但是使用分片我们可以访问序列中一定范围内的元素。分片通过冒号隔开两个索引来实现。

分片操作对于提取序列的一部分很有用的。而编号在这里显得尤为重要。第一个索引是要提取的第1个元素的编号,也就是要提取范围的开始端,第二索引也就是第二个元素的编号,也就是提取范围的结束端,但是分片中包含开始端,不包含结束端。

>>>numbers=[1,2,3,4,5,6,7,8,9]>>>numbers[3:7]/提取第四个元素到第7个元素之间的范围(4-8)但是不含8.[4,5,6,7]>>>numbers[2:-1]/-1索引表示最后一个元素,但是不包含[3,4,5,6,7,8]>>>

假设我们需要访问最后三个元素:

>>>numbers[6:9]/索引6表示第7个元素,但是索引9表示第10个元素,这个元素并不存在,但是不包含在内。[7,8,9]>>>>>>numbers[-3:]/还可以这样,-3表示倒数第三个元素,一直到结尾。[7,8,9]>>>

访问前三个元素:

>>>numbers[0:3][1,2,3]>>>numbers[:3][1,2,3]>>>

复制整个序列:

>>>numbers[:][1,2,3,4,5,6,7,8,9]>>>

如果在分片中,左边的元素比右边的元素晚出现在序列中,那么就会成为一个空序列。

>>>numbers[6:2][]>>>

更大的步长。进行分片的时候,分片开始和结束的标志需要进行指定,而另一个参数——步长——通常都是隐式设定的。在普通的分片中步长是1,分片操作就是按照这个步长遍历整个序列元素的。

>>>numbers[0:5][1,2,3,4,5]>>>numbers[0:5:2][1,3,5]>>>numbers[5:0:-2]/步长也可以是负数,表示从右到左提取元素。[6,4,2]>>>

3>序列相加

>>>[1,2,3]+[1,5,6][1,2,3,1,5,6]>>>"hello"+"world"‘helloworld‘>>>[1,2,3]+"world"Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:canonlyconcatenatelist(not"str")tolist>>>

列表和字符串是无法连接在一起的,尽管他们都是序列。简单来说,两种相同类型的序列才能进行连接操作。

4>乘法

用数字乘以一个序列会生成新的序列,而在新的序列中,原来的序列会被重复n次。

>>>"python"*5‘pythonpythonpythonpythonpython‘>>>[34]*5[34,34,34,34,34]>>>

空列表可以简单的用两个中括号([])来表示,但是若我们想要创建占用10个元素空间的序列,这里可以直接使用None。None是一个python内建值,它的确切含意是“这里什么也没有”。

>>>sequence=[None]*10>>>sequence[None,None,None,None,None,None,None,None,None,None]>>>

检查一个值是否在序列中,可以使用in运算符,该运算符会返回一个值,结果为真返回True,否则返回false。

>>>numbers[1,2,3,4,5,6,7,8,9]>>>‘3‘innumbers/用单引号表示一个字符,所以返回假False>>>3innumbers/数字表示返回真True>>>

长度,最小值,最大值:

>>>len(numbers)9>>>max(numbers)9>>>min(numbers)1>>>

2.列表的方法:

字符串不能像列表一样被修改,所以有时根据字符串创建列表会很有用。

>>>n=list("hello")>>>n[‘h‘,‘e‘,‘l‘,‘l‘,‘o‘]>>>

list函数使用于所有类型的序列,而不只是字符串。

基本的列表操作:

1>改变列表的元素赋值:

>>>x=[1,1,1]>>>x[1,1,1]>>>x[1]=2>>>x[2]=3>>>x[1,2,3]>>>

2>删除元素可以使用del语句:

>>>delx[2]>>>x[1,2]>>>

3>分片赋值:

>>>name=list("perl")>>>name[‘p‘,‘e‘,‘r‘,‘l‘]>>>name[2:]=list("Ar")>>>name[‘p‘,‘e‘,‘A‘,‘r‘]>>>

使用分分片赋值时可以使用与原序列不等长的序列将分片代换。

>>>name[‘p‘,‘e‘,‘A‘,‘r‘]>>>name[1:]=list("ython")>>>name[‘p‘,‘y‘,‘t‘,‘h‘,‘o‘,‘n‘]>>>

分片赋值还可以在不需要替换任何元素情况下插入新元素。

>>>numbers=[1,5]>>>numbers[1:1]=[2,3,4]>>>numbers[1,2,3,4,5]>>>

这个程序只是替换了以空的分片,因此实际操作是插入了一个序列。若我们把分片内的元素替换为空,则就可以达到删除的目的。

>>>numbers[1,2,3,4,5]>>>numbers[1:3]=[]>>>numbers[1,4,5]>>>

3.列表的方法:

方法是一个与某些对象有紧密联系的函数,对象可能是列表,数字,也可能是字符串或者其他类型的对象。一般来说,方法可以这样调用。

对象.方法(参数)

append方法用于在列表末尾增加新的对象:

>>>lst=[1,2,3]>>>lst.append(4)>>>lst[1,2,3,4]>>>

注意:使用append时,它不是简单的返回一个修改过的新列表——而是直接修改原来的列表。

count方法:统计某个元素在列表中出现的次数

>>>["to","be","or","not","to","be"].count(‘to‘)/字符一定要带上引号2>>>["to","be","or","not","to","be"].count("to")2>>>x=[[1,2],1,1]>>>x.count(1)2>>>

extemd方法:在列表末尾一次性追加另一个序列中的多个值。换句话说,可以用新列表扩展原有的列表:

>>>a=[1,2,3]>>>b=[4,5,6]>>>a.extend(b)>>>a[1,2,3,4,5,6]>>>

extend方法:修改了被扩展的序列,而原始连接的操作则是返回一个全新的序列。

>>>b=[4,5,6]>>>a[1,2,3,4,5,6]>>>a+b[1,2,3,4,5,6,4,5,6]>>>a[1,2,3,4,5,6]>>>b[4,5,6]>>>

index方法。用于从列表中找出某个值第一匹配项的索引位置。

>>>n[‘a‘,‘b‘,‘c‘,‘d‘,‘a‘]>>>n.index("a")/注意如果是字符的话,一定要加引号。0


本文出自 “自定义” 博客,谢绝转载!

python---------列表和元组

评论关闭