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

Python学习笔记整理(五)Python中的列表.

2015-05-08 23:52 621 查看
列表和字段,这两种类型几乎是Python所有脚本的主要工作组件。他们都可以在原处进行修改,可以按需求增加或缩短,而且包含任何种类的对象或者被嵌套。

一、列表

列表的主要属性:

*任意对象的有序集合

从功能上看,列表就是收集其他对象的地方,可以把它看作组。列表所包含每一项都保持了从左到右的位置顺序(它们是序列)

*通过偏移读取

和字符串一样,可以通过列表对象的偏移对其进行索引,从而读取对象的某一部分内容。可以自行分片和合并之类的任务。

*可变长度,异构以及任意嵌套

列表可以实地增长或者缩短,并且可以包含任何类型的对象。支持任意的嵌套,可以创建列表的子列表的子列表。

*属于可变序列的分类

列表可以在原处修改。序列操作在列表与字符串中的工作方式相同。唯一的区别是:当合并和分片这样的操作当应用于列表时,

返回新的列表而不是新的字符串。然而列表是可变的,因为它们支持字符串不支持的其他操作,例如删除和索引赋值操作。

它们都是在原处修改列表。

*对象引用数组

列表包含了0或多个其他对象的引用。包含任何对象,对象可以是字典,也就是说可以嵌套字典。在Python解释器内部,列表就是C数组而不是链接结构。常
见的具有代表性的列表操作。更多可以查阅Python的标准库或help(list)或dir(list)查看list方法的完整列表清单。

操作 解释

L1=[] 一个空的列表

L2=[0,1,2,3] 四项:索引0到3

L3=['abc',['def','ghi']] 嵌套的子列表

L2[i] 索引

L2[i][j] 索引的索引

L2[i:j] 分片

len(L2) 求长度

L1+l2 合并

L2* 重复

for x in L2 迭代

3 in L2 成员

L2.append(4) 方法:增加 增加单个对象

L2.extend([5,6,7]) 方法:增加对多个对象

L2.sort() 方法:排序

L3.index('abc') 方法:通过对象查找对象索引(和索引相反的操作)

L2.insert(I,X) 方法:插入(在I位置插入X)。

insert() 插入的位置超过了列表的范围会插入得到列表最后一个位置。

L2.reverse() 方法:翻转

L2.remove('b') 方法:移除 方法的参数 填写的对象

L2.pop(1) 方法:移除 方法的参数填写的是索引

del L2[K] 裁剪:k为裁剪掉的索引

del L2[i:j] 裁剪:

L2[i]=1 索引赋值

L2[i:j]=[4,5,6] 分片赋值

rang(4) 生成整数列表/元组

xrange(1,4)

L4=[x**2 for x in range(5)] 列表解析

二、实际应用中的列表

1、基本列表操作

合并和重复,和字符串基本一致,不过结果是一个新的列表,而不是一个字符串。

>>> len([1,2,3])

3

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

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

>>> ['diege',18]*3

['diege', 18, 'diege', 18, 'diege', 18]

>>> 3 in [1,2,3]

True

>>> for x in [1,2,3]:print x,

...

1 2 3

注意“+”操作和字符串中的一样,然而值得重视的时"+"两边必须是相同类型的序列。不能将一个列表和一个字符串合并

到一起,除非先把列表转换为字符串。

>>> str([1,2]) + '34'

'[1, 2]34'

>>> [1,2]+list('34')

[1, 2, '3', '4']

2、索引,分片,矩阵

对列表进行索引的结果就是你指定的偏移处的对象(不管是什么类型),而对列表进行分片时往往返回一个新的列表

>>> L=['diege','lily','keylly']

>>> L[1]

'lily'

>>> L[-1]

'keylly'

>>> L[1:]

['lily', 'keylly']

>>> LL=[[1,2,3],[4,5,6],[7,8,9]]

>>> LL[2]

[7, 8, 9]

>>> LL[1][2]

6

三、原处修改列表

列表可变,支持实地改变列表对象的操作,以下操作都可以直接修改列表对象,而不会像字符串那样强迫你建立一个新的拷贝。因为python只处理对象引用,所以需要将原处修改一个对象与生成一个新的对象区分开来。

1、索引和分片赋值

赋值给一个特定的项(偏移)或整个片段(分片)来改变列表的内容。

>>> L=['diege','lily','keylly']

>>> L[1]='tom'

>>> L

['diege', 'tom', 'keylly']

>>> L[0:2]=['boo','july']

>>> L

['boo', 'july', 'keylly']

>>> L

['lily', 'kelly', 'x', [1, 2, 3]]

>>> L[0:2]=['lily','kelly','fang']

>>> L

['lily', 'kelly', 'fang', 'x', [1, 2, 3]]

分片赋值可以分成两步来理解。先删除,再插入。

列表嵌套字典

>>> L

['diege', {'tow': 789, 'one': 456}, 999]

>>> L[1]

{'tow': 789, 'one': 456}

>>> L[1]['one']

456

2、列表方法调用

1)、append() 追加一个元素

注意:追加是追加一个对象,一个字符串,一个列表等

>>> L

['boo', 'july', 'keylly']

>>> L.append('jun')

>>> L

['boo', 'july', 'keylly', 'jun']

>>> L

['lily', 'kelly', 'fang', 'x', [1, 2, 3], 'wang']

>>> L.append(['wang','fei'])

>>> L

['lily', 'kelly', 'fang', 'x', [1, 2, 3], 'wang', ['wang', 'fei']]

2)、extend() 在末端插入多个元素

放一个字符串会分解成字符插入,所以插入的参数要放入列表中。

>>> L.extend('test')

>>> L

['lily', 'kelly', 'fang', 'x', [1, 2, 3], 'wang', 't', 'e', 's', 't']

>>> del L[5:]

>>> L

['lily', 'kelly', 'fang', 'x', [1, 2, 3]]

>>> L.extend(['zhang','wang'])

>>> L

['lily', 'kelly', 'fang', 'x', [1, 2, 3], 'zhang', 'wang']

>>> L=[1,2]

>>> L.extend([3,4,5])

>>> L

[1, 2, 3, 4, 5]

3)、insert() 插入 要指定插入的位置和数据

insert() 插入的位置超过了列表的范围会插入得到列表最后一个位置。

>>> L.insert(1,5)

>>> L

[1, 5, 4]

>>> L.insert(2,[6,7,9])

>>> L

[1, 5, [6, 7, 9], 4]

>>> L=['diege','lily']

>>> L.insert(1,'kelly')

>>> L

['diege', 'kelly', 'lily']

4)、pop() 删除一个元素

pop() 方法:移除 方法的参数填写的是索引,默认最后一个

>>> L

[1, 2, 3, 4, 5]

>>> L.pop()

5

>>> L

[1, 2, 3, 4]

可以指定要删除的索引

>>> L.pop(2)

3

>>> L

[1, 2, 4]

5)、remove() 移除 必须指定对象名

>>> L.remove(2)

>>> L

[1, 4]

6)、sort() 排序

>>> L.sort()

>>> L

['boo', 'july', 'jun', 'keylly']

7)、reverse() 序列反转

>>> L.reverse()

>>> L

['keylly', 'jun', 'july', 'boo']

>>> L

['diege', 'kelly']

>>> L.remove('diege')

>>> L

['kelly']

注意 不支持find()和replace()方法,这两个方法属于字符串

3、其他常见的列表操作

del L[1]

>>> L

[1, 5, [6, 7, 9], 4]

>>> del L[1]

>>> L

[1, [6, 7, 9], 4]

>>> del L[1:]

>>> L

[1]

>>> L=['diege',1,5]

>>> L[1:]=[]

>>> L

['diege']

5个0列表的创建三种方法

[0]*5

>>>

>>> [0 for i in range(5)]

>>> L=[]

>>> for i in range(5):

... L.append(0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: