您的位置:首页 > 编程语言 > Python开发

Python基础教程-列表和元组

2017-06-20 22:04 381 查看
数据结构,是通过某种方式(例如元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构。

在Python中最基本的数据结构是序列。

1.概述

python内建序列,有6种:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象。

列表和元组的区别在于,列表可修改(用于元素添加等操作),元组不可修改(与python内部运作方式有关,内建函数返回元组,使用元组作为字典的键)。

操作一组数值的时候,序列很好用,序列也可以包含其他序列,如下数据库:

>>>edward = ['Edward', 32]

>>>John = ['John', 12]

>>>database = [edward, John]

>>>database

[['Edward', 42], ['John' 12]]

容器,基本上是包含其他对象的任意对象,序列和映射(如字典)是两类主要容器,序列的每个元素都有自己的编号,而映射中每个元素都有一个名字(键),

至于既不是序列也不是映射的容器类型,集合(set)为一个举例。

2.通用序列操作

索引(index),分片(sliceing),加(adding),乘(multplying)以及检查某个元素是否属于序列的成员(成员资格),

计算序列长度,找出最大元素和最小元素的内建函数。

迭代(interation),对序列进行迭代的意思是,依次对序列中的每个元素重复执行某些操作。

2.1索引

序列编号从0开始递增,元素可通过编号访问

负数索引从最后一个元素开始计数,最后一个元素位置编号为-1

>>>greeting = 'Hello'

>>>greeting[0]      'H'

>>>greeting[-1]     'o'

或者字符串字面值方式直接使用索引

>>>'Hello'[0]

一个函数调用返回一个序列,可直接对返回结果进行索引

>>>forth = raw_input('Year: ')[3]

Year:2005

>>>forth

'5'

2.2分片

访问一定范围内的元素,通过冒号相隔两个索引

两个编号(需要提取的第一个元素编号,分片之后剩下部分的第一个元素编号)

number = [1,2,3,4]

访问最后3位元素, >>>number[-3,]

访问最初3位元素   >>>number[ ,3]

访问整个序列 number[;]

步长的显示设置

>>>number[0:10:2]

[1,3,5,7,9]

提取每四个元素中的第一个,将步长设置为4即可:   >>>number[::4]     [1,5,9]

步长不能为0,但是可以为负数,表示从右向左提取            >>>number[8:3:-1]   [9,8,7,6,5]  

>>>number[10,0,-2]  [10,8,6,4,2]        >>>number[0:10:-2] [ ]        >>>number[: : -2]   [10,8,6,4,2]

>>>number[5: : -2]   [6,4,2]   >>>number[ : 5: -2]    [10, 8]

注意,开始点(第一个元素)的元素在结果中,结束点元素(第二个元素)不在结果中,负数做步长时,开始点要大于结束点

2.3序列相加

加号进行序列的连接操作。

>>>[1, 2, 3] + [4, 5, 6]    [1, 2, 3, 4, 5, 6]

>>>'Hello, ' +'World'      'Hello, world'

列表和字符串无法连接在一起,两种同类型才可以连接

2.4乘法

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

>>>'python' * 5    pythonpythonpythonpythonpython

>>>[42] * 5   [42, 42, 42, 42, 42]

 

空列表 [ ]

空值,没有放置任何元素,需要使用None,为python的内键值

初始化一个长度为10的空列表  >>>sequence = [None] * 10    >>>sequence    [None, None, ...]

2.5成员资格

检查一个值是否在序列中, in 运算符

该运算符检查某个条件是否为真,然后返回相应值,条件为真返回True,为假返回False, 布尔运算符,真值为布尔值

>>>permission = 'rw'   >>> 'w' in permissions      True

                                        >>> 'x' in permissions        False   可用于检查文件可写可读权限

>>>users = ['mlh', 'foo', 'bar']     >>>raw_input{'Enter your user name;' ) in users   Enter your user name: mlh   True  检查用户名是否在列表中

>>>Subject = '$$$' Get rich now !!! $$$'    >>>'$$$' in subject   True   作为垃圾邮件过滤器的一部分,检查字符串subject是否包含字符串'$$$'

2.6长度,最大值和最小值

内建函数len, min, max 返回序列中所含元素的数量,min和max函数分别返回序列中最大最小元素

>>>numbers = [100, 200, 34]

>>>len(numbers)   3        >>>min(numbers)    >>>max(2,3)  3   >>>min(3.6.2.1)  1

max和min直接以数字作为参数

3.列表

3.1 List函数

字符串不能修改,根据字符串创建列表,使用list实现

>>> list('hello')    ['h', 'e', 'l', 'l', 'o']

list适用于所有类型的序列,不只是字符串

将列表转为字符串  ’ '. join(somelist)

3.2基本的列表操作

可以使用上述适用于序列的标准操作,还有一些改变列表的方法:元素赋值,元素删除,分片赋值以及列表方法

3.2.1改变列表:元素赋值

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

3.2.2删除元素

>>>names = ['Alice', 'Beth', 'Cecil', 'Dee']    >>>del names[2]       >>>names      ['Alice', 'Beth', 'Dee']

3.2.3分片赋值

可以使用原序列不等长的序列将分片替换 >>>name = list('perl')    >>>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: 4] = [ ]    >>>numbers    [1, 5]                >>>dele numbers[1 : 4]

3.3列表方法

对象.方法(参数)

3.3.1 append,在恰当位置修改原来的列表

3.3.2 count, 统计某个元素在列表中出现的次数

3.3.3 extend,可以在列表的末尾一次性追加另一个序列中的多个值,可以用新列表扩展原有列表

extend方法修改了被扩展的序列,而原始的连接操作返回了一个全新的列表,原来列表不改变

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

3.3.5 insert 用于将对象插入到列表中

3.3.6 pop 移除列表中的一个元素(默认是最后一个),并返回该元素的值

栈,append实现入栈,pop实现出栈

队列,insert(0,...)代替append,或者用pop(0)代替pop----collection模块中的deque对象

3.3.7 remove 用于移除列表中某个值的第一个匹配项,是一个没有返回值的原位置改变方法,修改了列表却没有返回值

3.3.8 reverse 将列表中元素反向存放,改变了列表但不返回值(同remove,sort)

3.3.9 sort 用于在原位置对列表排序,改变原来的位置

获得原序列

3.3.10 高级排序

4.元组:不可变序列

创建,使用逗号分割,自动创建一个元组

>>> 1,2,3    (1,2,3)

元组也是通过圆括号括起来,空元组可以用没有包含内容的两个圆括号表示( )

实现包括一个值的元组,加逗号 >>>42  42       >>>42,   (42, )       >>>(42, )     (42, )       

>>> 3 * (40+2)      126         >>>3* (40 +2, )      (42, 42, 42)

4.1 tuple函数

以一个序列作为参数并把他转化为元组,如果参数是元组,该参数会被原样返回

>>>tuple([1, 2, 3])    (1, 2, 3)         >>>tuple('abc')   ('a', 'b', 'c')     >>>tuple((1, 2, 3))    (1, 2, 3)

4.2 基本元组操作,创建和访问元组

>>>x = 1, 2 ,3   >>>x[1]  2          >>>x[0:2]    (1,2)

元组的分片还是元组,就像列表的分片还是列表

4.3元组存在的意义

元组在映射中当做键使用

元组作为很多内建函数和方法的返回值存在,也就是说必须对元组进行处理,只要是不修改元组,绝大多数情况就是当做列表操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息