python数据结构
容器(container)
|
|- 序列(sequencer) - 每个元素都有自己的编号(index)
|- 列表(list) - [], list(),可修改
|- 元组(tuple) - (), tuple(),不可修改
|- 字符串(string) - "", str()
|- Unicode字符串(Unicode string)
|- buffer object
|- xrange object
|
|- 映射 - 每个元素都是自己的名字-键值(key)
|- 字典(dictionary) - {}, dict()
|
|- 集合(set)
序列(sequencer)
每个元素都有自己的编号(index)。
类似数组
通用序列(sequencer)操作
- 1. 索引(indexing) # seq[idx] # 访问元素
- 2. 分片(sliceing) # seq[idx1:idx2] # 访问一定范围的元素
- 3. 连接(adding) # seq1 + seq2 # 序列的连接操作
- 4. 乘法(multiplying) # seq * number # 复制元素
- 成员资格(in) # 检查某个元素是否属于序列的成员
- ----
- 计算序列的长度 # len(seq)
- 找出最大元素 # max(args)
- 找出最小元素 # min(args)
- 迭代(iteration)
- ----
- cmp(x,y)
- reversed(seq)
- sorted(seq)
列表(list)
如同数据结构中的
链表
转化/反转化列表
- list(seq)
- ''.join()
通用序列(sequencer)的操作
- 1. 索引
- 2. 分片
- 3. 连接
- 4. 乘法
列表的操作
- 1. 元素赋值 p[n] = x
- 2. 元素删除 del p[n]
- 3. 分片赋值 (替换,插入,删除)
- 替换 p[n:]
- 插入 p[n:n]
- 删除 p[n:m] = []
列表的方法
- IDLE中lst.后按
TAB
可以显示list方法 - y = x[:]创建副本(复制出新的副本),而y = x是指针指向
对象.方法(参数)
- append() # list末尾追加·新对象 # lst[len(lst):] = [4,5]
- count() # 统计某个元素在list中出现的次数
- extend() # list末尾追加·另一个`序列`中的多个值 # lstA += lstB
- index(one_obj) # 从list中返回某个值第一个匹配项的索引
- insert(idx, one_obj) # 将对象插入到list中,只能插入1个对象?
- pop() # 移除list中一个元素(不填参数默认是最后一个元素),并返回
# a = lst.pop(), lst.append(last_value) # stack用法
# b = lst.pop(0), lst.append(last_value) # queue用法
# python无push
- remove(one_obj) # 移除list中某个值的第一个匹配项
- reverse() # 将list中的元素反向存放
- sort() # 将list进行排序
# (改变列表而非产生副本,不改变原序列就要自己创建副本)
# y=sorted(x)
# 反向排序 sort() + reverse()
# sort(key=len, reverse=False)
元组(tuple)
- tup = () # 空元组
- tup = (1,) # 一个值的元组加逗号,因为(1)=1
- tup = (1,2,3)
转化元组
- tuple()
不同于list的意义
- 在映射中当键(key)使用,而list不行
- 作为很多内建函数和方法的返回值的存在,因为不能改变
- tuple没有index和count的方法
字符串(string)
字符串类string的函数
import string
string.capwords(s,[, sep]) // 所有单词首字母大写,其他字母小写
// 类似字符串的方法 title(),机制见下文
string.maketrans(from, to) // 创建用于转换的转换表
// 某字符替换另一种字符的对应关系
string.capwords(s,[, sep])
- 使用split()分割字符串s(以sep为分隔符)
- 使用capitalize()函数将分割得到的单词的首字母大写
- 使用join()以sep为分隔符重新连接
string.maketrans(from, to)
- 两个等长的参数
- 表示第一个字符串参数中的每个字符都用第二个参数相同位置的字符替换
字符串的方法
find类
- find()
- rfind()
- index()
- rindex()
- count()
- startswith()
- endswith()
join类
- join()
- split()
translate类
- translate()
- lower()
- islower()
- capitalize()
- swapcase()
- tilte() // 所有单词的首字符大写,不一定得到自然结果
// 类似 string.capwords(str),不一定得到自然结果
- istitle()
- upper
- isupper()
replace类
- replace() // 替换字符
- translate() // 替换单个字符
字典(dictionary)
转化字典
- dict()
字典的方法
字典的方法很多类似
指针赋值
而非值复制
,会对源字典产生影响
- clear() // 原地操作,无返回值
- copy() // 类指针赋值
- fromkeys()
- get() // 直接访问空key会报错,get返回None
- in // python3 没有has_key了
- items()/iteritems() // key-value 以list方式返回
- keys()/iterkeys() // key 以list方式返回
- values()/itervalues() // value 以list方式返回
- pop() // 随机del
- popitem() // 随机del和返回del的item
- setdefault() // 类似get(),空value设置default值
- update() // 没有的添加,已有的覆盖