首页 > 技术文章 > 笔记-Python基础教程(第二版)第二章

xydy1024 2017-03-01 13:18 原文

第二章 列表和元组

01:概念

最基本的数据结构是序列(sequence 索引从0开始 【序列可以嵌套】

6种内建序列:列表 元组

     字符串、Unicode字符串、buffer对象、xrange对象

 

列表和原组区别:列表修改、元组不能修改

列表: edward = ["edward",42]

元组:(1,2,3

02:通用序列操作:

1.索引

和数组概念类似,但允许负数

0==>1   -1==>1(最后位置开始数 -1

 

2.分片

即切割

Name[s:e]   name=序列名字 s=开始的索引  e=实际结束的索引+1  [s;e)

假设:name[a:b]

[a:b] == [a,b)   a<0b=0  a在序列中一定出现的比b早(从左至右)

第一个 或者最后一个可以用空代替 numbers[-3:] numbers[:3]

numbers[:] == 整个序列

[a:b:c] c为步长,c=0

c>0时 从左至右 numbers[0:10:2] ==>[1,3,5,7,9]

c<0时 从右至左 a>b numbers[10:0:-2] ==>[10,8,6,4,2]

 

3.加法

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

同类型才能加!!!

 

4.乘法

序列*数字==>序列*n   ==> 序列重复n

"python"*5 ==> "pythonpythonpythonpythonpython"

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

[None]*10  长度为10的空列表

NonePython内建值,表示什么都没有

 

5.成员资格

检查元素是否包含在该列表内,返回True或者False

>>>permissions=’rw’

>>>’w’ in permissions

==>True

 

6.长度、最小值和最大值

内建函数 len min max  len() min() max()

 

7.list函数

拆分转换为列表

>>>list(hello)

==>[H,  e,  l,  l,  o]

03:列表操作

最后结果依旧是列表

1.元素赋值

和数组类似,利用索引指定元素,进行赋值

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

>>>x[1]=2

>>>x

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

 

2.删除元素

使用del 语句 如:del  names[2]

 

 

3.分片赋值

A:实现不等长序列替换

>>>name = list(“Perl”)

>>>name[1:] = lis(“ython”)

>>>name

======> [‘P’,  ‘y’,  ‘t’,  ‘h’,  ‘o’,  ‘n’]

 

 

B:插入新元素

>>>numbers = [1,5]

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

>>>numbers

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

 

C:删除元素,将要删除的元素,使用对应索引,赋值为空

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

>>>numbers[1:4]=[]

>>>numbers

=====>[1,5]

 

 

 

 

 

 

4.列表方法

01.append方法

作用:在列表末尾追加新对象

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

>>>lst.append(4)

>>>lst

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

 

注意:append方法是直接修改原列表

 

02.count 方法

作用:统计某元素出现的次数,返回次数!

>>>[‘to’, ‘be , ‘or’, ‘not’, ‘to’, ‘be’].count(‘to’)

=====>2

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

>>>x.count(1)

=====>2

>>>x.count([1, 2])

=====>1

 

 

03.extend 方法

作用:用新列表拓展原列表      在列表末尾一次性追加另一个序列的多个值

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

>>>b=[4,5,6]

>>>a.extend(b)

>>>a

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

对比

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

>>>b=[4,5,6]

>>>a+b

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

>>>a

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

注意:extend方法是直接修改原列表 a

      + 连接 是创建ab 连接后的副本 ==> a+b

 

04.index 方法

作用:查找某值的第一个匹配索引(第一次出现的位置),返回索引

count方法使用类似

 

05.insert方法

作用:对象插入列表中  a.insert(s,value)  s==插入起始位置  value == 插入的值

>>>numbers=[1,2,3,5,6,7]

>>>numbers.insert(3, ’four’)

>>>numbers

=====>[1,2,3, ’four’ ,5,6]

 

 

06.pop方法

作用:移除一个元素(默认最后一个),返回被移除元素

X.pop(index)   index==>需要删除元素的索引 空为默认情况,移除最后一个

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

>>>x.pop()

=====>3

>>>x

=====>[1,2]

>>>x.pop(0)

=====>1

>>>x

=====>[2]

 

注意:pop 方法实现  出栈功能,入栈可以使用append方法 都是在末尾添加删除元素(默认情况下)

 

07.remove方法

作用:删除指定元素第一个匹配项,无返回值!

>>>x=[‘to’, ‘be , ‘or’, ‘not’, ‘to’, ‘be’]

>>>x .remove(‘be’)

>>>x

=====>[‘to’,  ‘or’, ‘not’, ‘to’, ‘be’]

 

删除不存在的值会报错

 

08.reverse方法

作用:将列表中元素反向存放 x.reverse()

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

>>>x.reverse()

>>>x

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

 

 

 

 

 

09.sort方法

作用:原位置排序,会改变原列表!需要保存原列表时,应该用原列表的副本进行sort排序!

>>>x=[4,6,2,1,7,9]

>>>y=x[:]

>>>y.sort()

>>>x

=====>[4,6,2,1,7,9]

>>>y

=====>[1,2,4,6,7,9]

y=x[:] 简便复制副本   Y.sort()方法无参默认升序排序。

 

Sorted方法 返回一个列表

>>>x=[4,6,2,1,7,9]

>>>y=sorted(x)

>>>x

=====>[4,6,2,1,7,9]

>>>y

=====>[1,2,4,6,7,9]

使用Sorted方法达到了一样的效果 sorted(x) 保留了x原列表,新建了一个列表 保存排序后的列表!

 

10.高级排序

Sort函数原型

L.sort(cmp=None, key=None, reverse=False)

Acmp函数 【目前没搞明白】

Bkey 称为键 即关键字 如len

Creverse 反向操作,True为逆向排序,False为正向

尽量使用key而不是cmp来排序以提高运行速度

 

04元组

1.概念

不可修改的序列!使用圆括号括起来

A 自动创建元组 使用逗号分隔一些值

>>>1,2,3

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

B 空元组      直接输入一对圆括号

>>>()

=====>()

 

C 包括一个值的元组 一个值后面加逗号

>>>42

=====>(42,)

>>>(42)

=====>(42,)

 

2.tuple函数

作用:序列转换为元组 tuple(x)  x为参数,需要转换的序列

>>>tuple([1,2,3])      #列表转换成元组

=====>(1,2.3)

>>>tuple(‘abc’)

=====>(‘a’, ‘b’, ‘c’)

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

=====>(1,2.3)

3.基本元组操作

与序列大致相同,除了创建和访问

>>>x =1,2,3

>>>x[1]

=====>2

>>>x[0:2]

=====>(1,2)

元组分片还是元组

4.元组的其他应用

A:映射(集合)中当作键使用 【元组特有,而列表没有的功能】

B:元组作为很多内建函数和方法的返回值存在,也就是说,你必须对元组进行处理。一般不希望被修改。

 

推荐阅读