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&T | S和T的交集,返回S和T都存在元素的集合 |
S | T |
S-T | S和T的差集,只返回在S中的元素的集合 |
S^T | S和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