Python基础教程学习笔记 第二章 列表和元组
1、序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 2、序列(Sequence)的种类: 列表(list)、元组(tuple)、字符串(string)、Unicode 字符串、buffer对象、xrange对象 3、列表和元组的区别:列表可以进行修改,但是元组不行 4、tuple常作为字典的键 5、序列都可以进行以下操作: 索引(indexing)、分片(sliceing)、加(adding)、乘(multiplying)、以及检查元素是否属于序列(in)、最大值(max)、最小值(min)、长度(len)、迭代器(iterator)等操作 6、序列中也可以包含其他的序列 7、索引 7.1、第一个元素的索引是0,第二个是1,依次递增;最后一个元素的索引是-1,倒数第二个是-2,依次递减 7.2、对于序列可以直接进行索引,而不是一定非要通过变量进行索引,如:"Hello"[0],得到H 7.3、如果一个函数返回一个序列,可直接对结果进行索引而得到指定的元素 8、分片 访问一定范围内的元素 [start:end:step]:从start索引开始,每隔step个元素取一个元素,但是不包括end元素 [start:end]:从start索引开始,每隔1个元素取一个元素,但是不包括end元素 [start:]:从start索引开始取到结尾,每隔1个元素取一个元素 [:end]:从0开始,每隔1个元素取一个元素,但是不包括end元素 [:]:取所有元素 [::step]:从0开始取到结尾,每隔step个元素取一个元素 [:end:step]:从0开始,每隔step个元素取一个元素,取到end前一个元素 [start::step]:从start开始,取到结尾,步长step [start:start]:取得start元素 8.1、step > 0 从前往后取;step < 0 从后往前取;step 不能为0 9、相同类型的序列才能相加,第二个序列追加到第一个序列后面,生成新的序列副本 a = [1,2,3,4,5] b = [4,5,6,7,8] a + b的结果是:[1,8];a、b的内容不发生改变 10、序列乘以一个数字N,大小扩展为现在N倍,内容重复N倍,如: a = [1,5] a * 5的结果是:[1,1,5];a的内容不发生改变 11、可以使用in运算符一个对象是否属于一个序列,返回True或者False,例如: element1 = 1 element2 = 'c' element3 = "LLO" sequence1 = [1,5] sequence2 = "abcdefg" sequence3 = "HELLOWORLD" -------- >>> element1 in sequence1 >>> element2 in sequence2 #下面这个操作在2.3以上的版本才支持 >>> element3 in sequence3 12、求最大值、最小值、长度的函数分别是:max()、min()、len() 13、列表 13.1、list函数适用于所有的类型的序列,而不仅仅是字符串:lst = list("Helloworld") 13.2、"".join(lst)将lst转换为字符串 13.3、元素赋值:x=[1,5],x[0] = 5;要赋值的元素必须存在,否则报错;赋值之后将修改指定的元素 13.4、删除元素:names=["alice","beth","ceil","dee-dee","earl"];del names[2];删除指定下标的元素;删除之后将影响列表元素 13.5、分片赋值:name = list("perl") >>> name = list("perl") 13.6、列表方法:对象.方法(参数) 13.6.1、append():在列表末尾添加元素你,会修改调用者并且直接返回 >>> a = list("12345") 13.6.2、count():返回列表的指定元素的个数 >>> a = list("HelloWorld") 13.6.3、extend():追加一个列表到调用者的后面并修改调用者内容 >>> a = list("Hello ") 13.6.4、index():指定元素在list中第一次出现的索引,如果元素不存在,会出现错误 >>> a = list("Hello") 13.6.5、insert():插入对象到列表中 >>> a = list("Hello") 13.6.6、pop():默认弹出最后一个元素,指定一个参数时,删除指定索引的元素,并返回 >>> a = list("Hello") pop()方法是唯一一个能修改列表并且返回列表元素的方法 13.6.7、常见的数据结构:栈 FIFO:First Input First Output,先入先出:入栈――insert(0,元素);出栈――pop() LIFO:Last Input First Output,后入先出:入栈――append();出栈――pop(0) 13.6.8、remove():删除列表中第一个匹配项,会修改调用者,但没有返回值,如果删除的元素不存在,则会报错 >>> a = list("HelloWorld") 13.6.9、reverse():反向存放列表,会修改调用者 >>> a = list("Hello") 13.6.10、reversed()函数:反向存储序列,生成副本,不会修改参数内容,但是不会返回列表,而是返回迭代器,使用list()函数可以把迭代器转化为list:list(reversed(list)) >>> a = list("Hello") 13.6.11、sort():改变被排序里诶包,但是不会返回值 >>> a = [4,9] 如果不想改变a的内容,只想得到一个副本的排序结果,则需要先生成一个a的副本,然后对这个副本进行排序(副本的生成不能直接赋值哦,因为赋值实际上引用的是同一个对象,只能按照以下的方式): >>> a = list("hello world") 13.6.12、sorted()函数:不修改参数的内容,返回排序的副本 >>> a = list("hello world") 13.6.13、高级排序:按照特定的方式进行排序 a.按照compare(x,y)的形式自定义一个函数进行排序,这个自定义函数在x<y的时候返回-1;需要的时候返回0;x>y的时候返回1; 默认的系统提供了一个cmp的函数,用来进行排序,遵循在x<y的时候返回-1;需要的时候返回0;x>y的时候返回1的规则(3.0以上不再支持这个内置函数) b.sort方法支持两个可选参数key和reverse key制定一个排序的函数和cmp类似,但是这个函数并不会直接用来确定对象的大小,而是为每一个元素创建一个键,然后根据键来排序,例如要按照元素的长度来进行排序,则可以使用len函数来指定 r = ["aardvark","abalone","acme","add","aerate"] r.sort(key=len) 排序之后r的内容为:['add','acme','aerate','abalone','aardvark'] reverse的值为True或者False,来指明是否进行反序排列 >>> x = [2,8,9] 以上这些都可以通过sorted()函数进行替换 14、元组:不可改变的序列。如果用逗号分隔开一些值就创建了一个元组,一般都用圆括号括起来 >>> 1,5 如果想要创建一个非空元组,必须使用逗号,哪怕只有一个元素;若要创建空的元组,则直接使用一个() tuple([1,3])、tuple("123")、tuple((1,3))把其他的序列转换为元组 元组可以作为映射的键,但是list却不行,这个也是元组的主要应用场合 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |