Python的数据结构有 序列和容器(容器包含序列、映射、集合)

Python包含6种内建的序列:列表、元祖、字符串、Unicode字符串、buffer对象、xrange对象。

最基本的数据结构是序列(元祖和列表),序列中所有元素都是有编号的,元素的位置称为索引,第一个索引得失0,第二个索引是1...,最后一个索引为-1

 序列类型转换的工厂函数:

list(iter)把可迭代对象转换为列表

str(obj)把对象转换成字符串

unicode(obj)

basestring()

tuple(iter)把可迭代对象转换成一个元祖对象

通用序列操作:

 

通用操作

说明

例子

索引

字符串字面值能够直接使用索引

变量引用使用索引

'Hello'[1]

moth[1]

分片

 跟索引类似

可以置空最后/第一个的索引

可以是负数,从结尾开始计数

加入步长

tag[9:30]

tag[2:]

tag[-3:-1]

tag[::-2]

相加

相同类型的序列才能进行连接操作

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

输出[1,2,3,4,5]

乘法

原来的序列将被重复x次

 'python'*5

[10]*3

成员资格

元素 in 序列,返回布尔值

'w' in 'rw'

'users' in ['mlh','users']

长度

内建函数

 len(numbers)

max/min

内建函数

 max(2,3,4)

比较

内建函数

cmp(x,y)

序列->列表:

列表用方括号表示,区别于元祖的括号表示。

创建列表的方式:

x=[]

x=[123,'abc',['inner',222]]

list('foo')   ->['f','o','o']

 

方法即是与某些对象有紧密联系的函数。

可以用dir(list)来列出所有内建方法

基本操作

元素赋值

x[1]=2

不能为一个位置不存在的元素赋值

 

 

删除元素

del names[2]

 删除整个列表del names

 

 

分片赋值

name[2:]=list('ar')

 

 

列表方法

append()

lst=[1,2,3]

lst.append(4)

末尾加上元素4

没有返回值

 

count()

x.count([1,2])

统计列表x中出现多少个[1,2]

返回数字

 

extend()

a.extend(b)

a列表加上b列表,改变a列表

没有返回值

 

index()

knights.index('who')

在列表knights中,返回元素who第一次出现的索引位置

返回索引位置数字

 

insert()

numbers.insert(3,'four')

在numbers的列表中,在索引3的位置插入元素four

没有返回值

 

pop()

x.pop()

x.pop(0)

默认移除列表x的最后一个元素

移除列表的索引为0的元素

返回被删除的元素值

 

remove()

x.remove('be')

移出列表中某个值的第一个匹配项

没有返回值

 

reverse()

x.reverse()

将列表中的元素反向存放

没有返回值

 

sort()

x.sort()

在原位置进行排序

没有返回值

 

高级排序

cmp(42,32)

x<y时返回负数,x>y返回正数,x=y返回0

 

 

 

x.sort(cmp)

根据大小排序

 

 

 

x.sort(key=len)

根据长度排序

 

 

 

x.sort(reverse=True)

反向排序

 

 内建函数

list函数

list('Hello')->['H','e','l','l','o']

list(元祖名称)->列表

将元祖转换为列表

将字符串转换为列表

 

 

sorted()

 sorted(x)

排序

 返回列表,返回的是新对象

 

reversed()

 reversed(x)

颠倒 

返回列表 ,返回的是新对象

 

enumerate()

for i,j in enumerate(x)

取序列号和序列值

返回序列号和序列值

 

zip()

for i,j in zip(x1,x2)

 

 

 

sum()

sum(x)/sum(x,4)

列表值相加/列表相加后和后面的参数相加

 

x=[i*2 for i in [8,-2,5]]

x=[i for i in range(8) if i%2==0]

序列->元祖:

元祖不可修改。用圆括号括起来的。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

a=1,

a=('abc',12,[s,'iii'])

x,y=1,2

tuple函数

tuple([1,2,3])

->(1,2,3)

把一个序列作为参数并转换为元祖

返回元祖

与序列相关的模块

copy

提供浅拷贝和深拷贝

 包含函数copy(),deepcopy()

operator

序列操作符

 

re

正则表达

 

StringIO

 

 

Textwrap

 

 

types

包含python支持的所有类型

 

collections

高性能容器数据类型