Skip to content

Python组合数据类型

序列类型常用操作符

函数功能说明
cmp(seq1,seq2)比较序列大小从左到右依次比较,直到比较出大小
len(seq1)获取序列长度如果seq1为字符串,返回字符串中字符数,否则返回序列中元素个数
max(seq1)或min(seq1) 求最大值或最小值seq1字符串:返回字符串中ASCII码最大或最小的字符。也可比较序列中元素或多个序列
sorted(seq1)按由小到大顺序排列
sum(seq1)求和对数字型列表或元组中的各元素求和
list(seq1)或tuple(seq1)通过浅拷贝数据创建一个新的列表或者元组同常用于将元组转换为列表,或将列表转换为元组

列表

列表是一种序列类型,标记"[]"可创建列表,使用序列的常用操作符可以完成列表的切片,检索,计数等操作。

列表基本操作:

操作符功能描述
ls[i]=x将列表ls的第i项元素替换为x
ls[i:j]=lst用列表lst替换列表ls中第i到第j项元素(不含第j项)
ls[i:j:k]=lst用列表lst替换列表ls中第i到第j项以k为步长的元素(不含第j项)
del ls[i:j]删除列表ls第i到第j项元素
del ls[i:j:k]删除列表ls第i到第j项以k为步长的元素
ls+=lst或(1s.extend(1st)将列表lst元素追加到列表ls中
ls*=n更新列表ls,其元素重复n次
ls.append(x)在列表ls最后增加一个元素x
ls.clear()删除列表ls中的所有元素
ls.copy()复制生成一个包括ls中所有元素的新列表
ls.insert(i,x)在列表1s的第i位置增加元素x
ls.pop(i)返回列表ls中的第i项元素并删除该元素
ls.remove(x)删除列表中出现的第一个x元素
ls.reverse(x)反转列表Is中的元素
ls.sort()排序列表Ils中的元素
python
#基本操作
a=[]     #创建空列表
a2=["哈哈",123,"ddd",125,152]   #创建不同类型元素组成的列表
a3=["哈",12,"dd",15,52] 
a2[2]    #索引找到列表中第2项元素
a2[1:4]   #通过切片访问列表中从第1项到第4项的元素
a2[-1:-4]   #通过切片访问列表中从倒数第4项到倒数第1项的元素
len(a2)    #计算列表元素个数
a2.index(125)    #返回125元素第一次出现的位置
a2.count(123)    #统计列表中出现123的次数
#常用方法
a2[1]=3    #替换列表1号元素为数字3
max.(a3)   #计算a3列表中数字元素的最大值
a2[0:3]=a3    #替换项目0到项目3的元素为a3列表中的元素
a2+=a3     #合并列表a2和a3
del a2[0:3]    #删除项目0到2的3个列表元素
a2.append(99)   #追加列表元素99,在列表末尾
a4=a2.copy   #复制列表a2到a4
a4.clear()   #清处a4列表
a4.pop(3)   #删除列表项目3号位置上的元素,并返回删除元素值
a2.reverse()  #翻转a2列表的元素位置
a2.sort()    #排序列表
for i in a2:    #遍历列表
    print(i,end=",")

元组

元组使用“()”创建,元组中值不可以修改,元组的括号可省略

python
#基本操作
a=('python','chemistry',1997,2000)    #元组中也能包含不同元素
b=(1,2,3,4,5)
c="a","b","c","d"     #元组的括号可省略
d=(50,)    #元组中只有一个元素时,逗号不可省略
a+b      #元组a和元组b连接
a[2]     #使用索引访问元组a的第2项目的元素内容
len(a)   #统计a中元素的个数
a.index(1997)   #检索1997在a元组中第一次出现的位置
#元素列表转换
f=list(a)    #将元组转换为列表,赋值给f
f.append(999)   #在列表f后添加元素999
tuple(f)    #将f又转换回元组

字典

字典是Python中内置的映射类型,映射是通过键值对查找数据信息的过程,可用标记"{}"创建,键和值用冒号分开,元素间用逗号隔开,dict()是创建字典的函数

字典可以看作由键值对构成的列表,在搜索字典时,首先查找键,找到键后直接获取该键的值。

字典与真实字典类似,键相当于单词,按顺序查找很容易,搜索却很困难,字典中元素是无序的,添加键值(key)时,Python会自动排列顺序,提高搜索效率,且排列方式对用户隐藏

方法或操作功能描述
dicts.keys()返回所有的键信息
dicts.valuesQ返回所有的值信息
dicts.items()返回所有的键值对
dicts.get(key, defualt)键存在则返回相应值,否则返回默认值
dicts.pop(key, default)键存在则返回相应值,同时删除键值对,否则返回默认值
dicts.popitem()随机从字典中取出一个键值对,以元组(key, value)的形式返回
dicts.clear()删除所有的键值对
del dicts[key]删除字典中的某个键值对
key in dicts如果键在字典中则返回True,否则返回False
dicts.copy()复制字典
dicts.update(dicts2)更新字典,参数dict2为更新的字典
python
#基本用法
a={}    #创建一个空字典
b={"id":10,"name":"MTian","city":"sichuan"}    #创建包含各种元素的字典
id in b  #检索id是否在b字典中存在,存在则会显示true
b["city"]="shanghai"    #修改字典中city为key的元素为shanghai
b["sex"]="男"     #添加元素,其中key是sex,内容为男
c=b.keys()    #获得键视图
c=b.values()   #获得值视图
c=b.itens()    #获得键值对视图
for k in c:
  print(k,end="")   #遍历b字典中的键,
b.get("id")   #获取对应键的值
b.pop('name')  #删除键的值并返回值
b.popitem()   #逐一删除键值对
copy()和update()  #一样适用字典进行复制和添加

集合

使用set()可以创建一个集合,与列表元组字典等数据结构不同,创建集合必须使用set()函数

方法功能描述
a.discard(x)在集合中移除元素,若不存在该元素不报异常
s.isdisjoint(T)判断集合s和T中存在相同元素,则返回true
S&TS和T的交集,返回S和T都存在元素的集合
ST
S-TS和T的差集,只返回在S中的元素的集合
S^TS和T的补集,只返回S和T中不同的元素
其他的和字其他的差不多常用的:add clear copy pop remove len
python
a=set([1,2,3,4,5])    #创建集合a
b=set("python")    #创建集合b
{'y', 'o', 'h', 't', 'p', 'n'}   #集合b 样式

组合数据类型的应用

统计英文句子中的单词出现次数的例子

python
a='There is no elevator, to success.You have to take the stairs'
for i in ".,":    #遍历a中的标点符号
    b=a.replace(i," ")    #若存在i中的符号,则替换为空格
c=b.split()    #spli()函数是用空格作为分隔符
d={}    #创建一个空字典
for wd in c:    #遍历c中的元素
    if wd in d:  
        d[wd]+=1    #如果wd中元素在d中,那么遍历到的键对应的元素值就加1 
    else:
        d[wd]=1     #如果wd中元素在d中不存在,那么就写入d字典,且赋值给对应键为1
e=list(d.items())   #返回所有键值对,且转换为列表赋值给e
e.sort(key=lambda x:x[1],reverse=True)   #对统计结果进行降序排列,
for e1 in e:    #遍历e中元素给e1
    word,count=e1     #e1中的元素分别赋值给word和count
    print("{:<12} {:>5}".format(word,count))    #进行字符切片操作,word中的值左对齐12  count中的值右对齐5