线性数据结构:
列表(list):
特性:
使用中括号[ ] 表示
列表内的元素可以任意对象(数字,字符串,对象,列表)
列表内元素有顺序,可以使用索引
线性的数据结构
列表是可变的
语法:
index(value,[start[,stop]]): 查找值,返回索引
count(value): 返回列表中匹配值的次数
len(list): 返回元素个数
append(object): 列表尾部追加元素
insert(index,object): 在指定索引处插入元素
extend(iteratable): 将可迭代对象的元素追加进来,原地修改,返回None
remove(value): 移除列表第一个匹配的值,就地修改,返回None
pop([index]): 指定索引,从索引处移除元素;不指定索引,尾部移除元素
clear(): 清空列表
reverse(): 列表反转,就地修改,返回None
sort(key=None,reverse=False): 列表排序,默认升序;reverse为True,反转,降序
元组(tuple):
特性:
使用小括号() 表示
一个有序的元素组成的集合
支持索引
是不可变对象
元组是只读的,没有增,删,改方法
语法:
index(value,[start[,stop]]): 查找值,返回索引
count(value): 返回元组中匹配值的次数
len(tuple): 返回元素个数
字符串(str):
特性:
一个个字符组成的有序的序列,是字符的集合
使用单引号,双引号,三引号引住的字符序列
字符串是不可变对象
支持索引
字符串分割:
split系:
split(sep=None,maxsplit= -1) 从左至右,sep指定分割字符串,maxsplit指定分割次数,-1表示遍历整个字符串
rsplit(sep=None,maxsplit= -1) 从右至左,sep指定分割字符串,maxsplit指定分割次数,-1表示遍历整个字符串
splitlines([keepends]) 按照行来切分字符串,keepends指是否保留行分隔符
partition系:
partition(sep) 从左至右,把字符串分割成两部分,返回头,分隔符,尾三部分的三元组,如果没有找到分隔符,返回头,两个空元素的三元组;sep分割字符串,必须指定
rpartition(sep) 从右至左,把字符串分割成两部分,返回头,分隔符,尾三部分的三元组,如果没有找到分隔符,返回尾,两个空元素的三元组;sep分割字符串,必须指定
字符串修改:
replace(old,new[,count]) 字符串找到匹配替换为新子串,返回新字符串;count标识替换次数,不指定就是全部替换
strip([chars]) 从字符串两端去除字符集chars中的所有字符;没有指定,去除两端空白字符
lstrip([chars]) 从左开始
rstrip([chars]) 从右开始
字符串查找:
find(sub[,start[,end]]) 在指定区间,从左至右,查找子串,找到返回索引,没找到返回-1
rfind(sub[,start[,end]]) 在指定区间,从右至左,查找子串,找到返回索引,没找到返回-1
index(sub[,start[,end]]) 在指定区间,从左至右,查找子串,找到返回索引,没找到抛异常
rindex(sub[,start[,end]]) 在指定区间,从右至左,查找子串,找到返回索引,没找到抛异常
count(sub[,start[,end]]) 在指定区间,从左至右,统计子串出现的次数
len(string) 返回字符串的长度
字符串判断:
endswith(suffix[,start[,end]]) 在指定区间,字符串是否以suffix结尾
startswith(prefix[,start[,end]]) 在指定区间,字符串是否是prefix开头
isalnum() 是否是字母和数字组成
isalpha() 是否是字母
isdigit() 是否全部是数字
islower() 是否全部是小写
isupper() 是否全部是大写
bytes,bytearray:
特性:
bytes是字节组成的有序不可变序列(语法和字符串一样)
bytearray是字节组成的有序的可变序列(语法和列表一样)
支持索引
定义:
bytes/bytearray() 空bytes/bytearray
bytes/bytearray(int) 指定字节的bytes/bytearray,被0填充
bytes/bytearray(iterable_of_ints) ->bytes/bytearray[0,255]的int组成的可迭代对象
bytes/bytearray(string,encoding[,errors]) ->等价于string.encode(),bytearray返回可变对象
使用b前缀定义:
只允许基本ASCII使用字符形式b'abc9'
使用16进制表示b"\x41\61"
*b前缀定义的类型是bytes类型
编码与解码:
字符串按照不同的字符集编码encode返回字节序列bytes
encode(encoding='utf-8',errors='strict') ->bytes
字节序列按照不同的字符集解码decode返回字符串
bytes.decode(encoding='utf-8',errors='strict') ->str
bytearray.decode(encoding='utf-8',errors='strict') ->str
非线性数据结构
集合(set):
特性:
可变的,无序的,不重复的元素的集合
set的元素要求必须可以hash
元素不可以使用索引
可以迭代
语法:
add(elem) 增加一个元素到集合,如果元素存在,什么也不做
update(*others) 合并其他元素到集合中,参数是可迭代对象,就地修改
remove(elem) 移除元素,元素不存在,抛出KeyError异常
discard(elem) 移除元素,元素不存在,什么也不做
pop() 移除并返回任意的元素,空集返回KeyError异常
clear() 移除所有元素
集合运算:
并集:
union(*others) 返回和多个元素合并后的新的集合
| 运算符重载 等同union
update(*others) 和多个集合合并,就地修改
|= 等同update
交集:
intersection(*others) 返回多个集合的交集
& 等同intersection
intersection_update(*others) 获取和多个集合的交集,就地修改
&= 等同intersection_update
差集:
difference(*others) 返回和多个集合的差集
- 等同difference
difference_update(*others) 获取和多个集合的差集并就地修改
-= 等同difference_update
对称差集:
symmetric_difference(other) 返回另一个集合的差集
^ 等同symmetric_difference_update(other) 获取和另一个集合的差集并就地修改
^= 等同symmetric_difference_update
字典(dict)
特性:
key-value键值对的数据的集合
可变的,无序的,key不重复
key必须可hash
字典元素的访问:
d[key] 返回key对应的值value,key不存在抛出KeyError异常
get(key[,default]) 返回key对应的值,key不存在返回缺省值,没有设置返回None
setdefault(key[,default]) 返回key对应的值,key不存在,添加kv对,值设置为default并返回default,没有设置返回None
语法:
d[key] = value 将key对应的值修改为value,key不存在添加新的kv对
update([other]) 使用另一个字典的kv对更新本字典,key不存在就添加,key存在就覆盖存在的key对应的值,就地修改
pop(key[,default]) key存在,移除并返回对应的值,key不存在返回给定的default,default未设置,key不存在抛出KeyError异常
popitem() 移除并返回一个任意的键值对,字典为empty抛出KeyError异常
clear() 清空字典