python数据结构总结

这篇博客总结了Python中的主要数据结构,包括线性和非线性的。线性数据结构中讨论了列表、元组和字符串,详细阐述了它们的特性、语法以及操作方法。非线性数据结构部分介绍了集合和字典,探讨了它们的特性、语法和常见操作,如集合运算和字典元素的访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性数据结构:

列表(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() 清空字典
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值