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 | 高性能容器数据类型 | |
| | |
| | |
| | |