Python入门篇之列表和元组
列表和元组的主要区别在于,列表可以修改,元组则不能。一般情况下,在几乎所有的情况下列表都可以代替元组 例如:使用序列可以表示数据库中一个人的信息(姓名,年龄) 复制代码 代码如下: >>> edward=['Edward Gumby',42] 序列还可以包含其他序列 复制代码 代码如下: >>> edward=['Edward Gumby',42] >>> john=['John Smith',50] >>> database=[edward,john] >>> database [['Edward Gumby',42],['John Smith',50]] 通用序列操作 索引 序列中的所有元素都是有编号的--从0开始递增。这些元素可以通过编号分别访问,如下: 复制代码 代码如下: >>> greeting='hello' >>> greeting[0] 'h' >>> greeting[-1] 'o' >>> 'hello'[1] 'e' 如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作,例如: 复制代码 代码如下: >>> fourth=raw_input('Year:')[3] Year:2005 >>> fourth '5' View Code 运行结果: 复制代码 代码如下: >>> Year: 1974 Month(1-12): 8 Day(1-31): 16 August 16th,1974 分片 使用分片操作来访问一定范围内的元素,分片通过冒号相隔的两个索引来实现: 复制代码 代码如下: >>> tag='<a herf="http://www.python.org">Python web site</a>' >>> tag[9:30] 'http://www.python.org' >>> tag[32:-4] 'Python web site' 第一个索引是需要提取部分的第一个元素的编号,而最后的索引则是分片之后剩下部分的第一个元素的编号 复制代码 代码如下: >>> numbers=[1,2,3,4,5,6,7,8,9,10] >>> numbers[3:6] [4,6] >>> numbers[0:1] [1] 1、优雅的捷径 访问最后的三个元素,当然可以进行显示的操作 复制代码 代码如下: >>> numbers[7:10] [8,10] >>> numbers[-3:-1] [8,9] >>> numbers[-3:0] [] >>> numbers[-3:] [8,10] 只有最后一个分片完成任务,这种方法同样适用序列开始的元素: 复制代码 代码如下: >>> numbers[:3] [1,3] 实际上,如果需要复制整个序列,可以将两个索引都置空: 复制代码 代码如下: >>> numbers[:] [1,10] 2、更大的步长 分片还有第三个参数--步长,通常都是隐式设置的,在一般情况下,步长是1,不能为0,但是可以为负数,即从右往左提取元素 测试代码 通过使用加号可以进行序列的连接操作: 复制代码 代码如下: >>> [1,3]+[4,6] [1,6] >>> 'hello.'+'world!' 'hello.world!' >>> [1,3]+'world!' Traceback (most recent call last): 乘法 用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复x次 复制代码 代码如下: >>> 'python'*5 'pythonpythonpythonpythonpython' >>> [42]*10 [42,42,42] 成员资格 为了检查一个值是否在序列中,可以使用in运算符,该运算符返回布尔值 复制代码 代码如下: >>> permissions='rw' >>> 'w'in permissions True >>> 'x'in permissions False Enter your name: mlh True >>> subject='$$$ Get rich now!!! $$$' >>> '$$$'in subject True 长度、最小值和最大值 内建函数len、min、max,len函数返回序列中所包含元素的数量,min和max函数分别返回序列中最大和最小的元素 复制代码 代码如下: >>> numbers=[100,34,678] >>> len(numbers) 3 >>> max(numbers) 678 >>> min(numbers) 34 >>> max(2,3) 3 >>> min(9,5) 2 list函数 list函数可以根据字符串创建列表 复制代码 代码如下: >>> list('hello') ['h','e','l','o'] 基本列表操作: 使用索引标记来为某个特定的、位置明确的元素赋值: 复制代码 代码如下: >>> x=[1,1,1] >>> x[1]=2 >>> x [1,1] 2、删除元素 使用del语句来实现: 复制代码 代码如下: >>> names=['Alice','Beth','Ceil','Dee-Dee','Earl'] >>> del names[2] >>> names ['Alice','Earl'] 注意:Cecil是彻底删除,列表长度也从5变为4 3、分片赋值 View Code 方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象,方法的调用方式:对象.方法(参数) 1、append append方法用于在列表末尾追加新的对象: 复制代码 代码如下: >>> lst=[1,3] >>> lst.append(4) >>> lst [1,4] 2、cout count方法用于统计某个元素在列表中出现的次数: 复制代码 代码如下: >>> ['to','be','or','not','to','be'].count('to') 2 >>> x=[[1,2],[2,[1,2]]] >>> x.count(1) 2 >>> x.count([1,2]) 1 3、extend extend方法可以在列表的末尾一次性的追加另一个序列中的多个值 复制代码 代码如下: >>> a=[1,3] >>> b=[4,6] >>> a.extend(b) >>> a [1,6] >>> #区别连接操作 >>> a=[1,6] >>> a+b [1,6] >>> a [1,3] 4、index index方法用于从列表中找出某一个匹配项的索引位置: 复制代码 代码如下: >>> knights=['we','are','the','knigths','who','say','ni'] >>> knights.index('who') 4 >>> knights=['we','ni'] >>> knights.index('herring') Traceback (most recent call last): 没有成功找到会引发异常 5、insert insert方法用于将对象插入到列表中: 复制代码 代码如下: >>> numbers=[1,7] >>> numbers.insert(3,'four') >>> numbers [1,'four',7] >>> #extend方法一样,insert方法的操作也可以用分片赋值来实现 >>> numbers=[1,7] >>> numbers[3:3]=['four'] >>> numbers [1,7] 6、pop pop方法会移除列表中的一个元素(默认是最后一个),并且返回该元素的值: 复制代码 代码如下: >>> x=[1,3] >>> x.pop() 3 >>> x [1,2] >>> x.pop(0) 1 >>> x [2] 注意:pop方法是唯一一个既能修改列表又返回元素值(除了None)的列表方法 7、remove remove方法用于移除列表中某个值的第一个匹配项: 复制代码 代码如下: >>> x=['to','be'] >>> x.remove('be') >>> x ['to','be'] >>> x.remove('bee') Traceback (most recent call last): 8、reverse reverse方法将列表中的元素反向存放,该方法也改变了列表但不返回值 复制代码 代码如下: >>> x=[1,3] >>> x.reverse() >>> x [3,1] 9、sort sort方法用于在原位置对列表进行排序,改变原来的列表,从而让其中的元素按照一定的 复制代码 代码如下: >>> x=[4,9] >>> x.sort() >>> x [1,9] 元组 任意对象的有序集合 复制代码 代码如下: >>> 1,3 (1,3) >>> () () >>> 42 42 >>> 42, (42,) >>> (42,) (42,) 元组也是(大部分时候是)通过圆括号括起来的,空元组可以用没有包含内容的两个圆括号来表示: tuple函数 tuple函数的功能和list函数基本上是一样的:以一个序列作为参数并把它转换为元组。 复制代码 代码如下: >>> tuple([1,3]) (1,3) >>> tuple('abc') ('a','b','c') >>> tuple((1,3)) (1,3) 列表与元组的相互转化: 复制代码 代码如下: >>> T=('cc','aa','dd','bb') >>> tmp=list(T) >>> tmp ['cc','bb'] >>> T=tuple(tmp) >>> T ('cc','bb') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |