Python数据类型基础总结
序列:
可以进行索引,可以切片,成员检测。
字符串,列表,元组为python中最常见的序列结构。
字符串索引访问:
索引正方向从0开始,索引每次递增1个数量
索引允许反方向从-1(最大的索引)开始计算,向前一个则绝对值加1
格式:
obj[索引编号index]
可以通过切片进行操作:
标准格式:obj[start?step] #从start指定的索引位置开始,到end索引的位置结束,每step个元 素取一个。(起止原则,前包后不包)
有如下几种简写方式:
obj[start:end]
obj[:end]
obj[start:]
obj[start::step]
obj[?step]
obj[::step]
简写形式下
step不指名则默认1,如果指明正数则向右切片,负数向左切片,每step绝对值的个数取1
start不指明则看step的方向,若为负,start默认最大索引值,否则最小索引值
end不指明则看step的方向,若为负,end默认最小索引值,否则最大索引值
切片的结果类型与原对象类型一致。若无法切出则是当前类型的空值类型
1.字符串(str):
abs(x) #绝对值函数,求出x的绝对值
math.fabs(x) #取x的绝对值
pow(a,b) #平方函数,求出a的b次方
round(x,y) #四舍五入取整,x为元素,y为保留位数
math.ceil(a) #向上取整,对a
math.floor(a) #向下取整,对b
math.log(b) #取自然对数,对b
math.modf(a) #返回整数部分与小数部分,对a
math.sqrt(a) #开方函数,对a
[ord chr] #阿斯科马值转换
eval(s) #将字符串当成有效的表达式来求值并返回计算结果
len(s) #返回字符串的长度
s.lower() #转换字符串中大写字母为小写字母
s.upper() #转换字符串中小写字母为大写字母
s.swapcase() #大写转小写 小写转大写
s.capitalize() #首字母大写,其余小写
s.title() #每个单词的首字母大写
s.center(width,[,fillchar]) #(宽度[修饰]) str左右加修饰,居中,左右字符默认则空格
s.ljust(width,[,fillchar]) #返回一个指定宽度的左对齐str,其余默认则空格
s.rjust(width,[,fillchar]) #返回一个指定宽度的右对齐str,其余默认则空格
s.zfill(width) #返回一个指定长度的右对齐str,前面补0
s.count() #返回str中“”出现的个数
s.find() #从左到右检测“”是否出现在列表中,得到第一次出现的下表,没有-1
s.rfind() #从左到右------可以指定范围,s.rfind("",15,30)
s.index() #从左到右------与find一样,寻不到会报错
s.rindex() #从右到左------与find一样,寻不到会报错
s.strip() #截掉str左右指定的字符,默认为空格
s.lstrip() #截掉str左指定的字符,默认为空格
s.rlstrip() #截掉str右指定的字符,默认为空格
s.split("a,count ") #使用指定字符串将s切割为列表,可选参数count可以指定切割次数
s.splitlines() #按行分隔
“a “.join(list) #使用字符串“a”将序列中的元素连接起来构成一个新的字符串
max() min() #求取字符串中最大值,最小值
s.replace(“原字符”,“替换字符”,[替换次数]) #替换字符串,默认全部替换
s.startswith(”",[开始],[结束]) #判断str的开头是否为“”
s.endswit(”",[开始],[结束]) #判断str的结尾是否为“”
s.encode() #返回字符串对应编码的字节流对象
s.decode() #返回字节流对象对应的字符串 "ignore"忽略报错
s.isalpha() #如果字符串至少有一个字符并且所有字符都是字母
s.isalnum() #如果 str至少有一个字符并且所有字符都是字母或数字
s.isupper() #判断长度至少为1,全部大写字母
s.islower() #判断至少有个英文字符,全部小写
s.istitle() #判断标题化
s.isdigit() #判断str是否只有数字
s.isnumeric() #判断str是否只有数字
s.isdecimal() #判断str是否只有十进制的数字
" ".isspace() #判断字符串中是否有空格
2.列表(list):
定义:
使用 [ ],在方括号中使用英文逗号合开一个个元素,元素的索引与定义的顺序有关。列表的元素可以是任何python的对象。也可以使用list函数将任何序列类型的对象转为列表类型。
列表的访问:
我们可以使用切片或索引访问,访问列表的指定元素。
1.添加
list.append
追加一个元素 list.append(value)
list.insert
插入 list.insert(index,value) #(索引值,插入对象)
list.extend
追加一个序列中的所有元素到当前列表中 list.extend(seq) #seq为元素列表
前面三种方法(append, extend, insert)可对列表增加元素的操作,他们没有返回值,是直接修改了原数据对象。
2.删除
list.remove(value)
移除一个指定valiue的第一次遇到的元素
list.pop()
将指定的索引位置的值删除并返回删除的值,不指定索引则删除最后一个
list.clear
清除方法:清除列表的所有元素
list.del
删除列表
3.遍历
for x in list:
4.重要方法
len(list) 返回list的长度
max(l)/min(l) 返回列表的最大值最小值
list.copy() 浅拷贝
math.keepcopy()list 深拷贝
list.count(value) 统计列表中valiue出现的次数
list.index(value) 返回value出现所在的索引值
list.reverse() 反向列表中元素
list.sort(cmp,key,reverse) reverse为真倒叙排列,为假升序排列(默认)
5.列表推导式
使用一个序列通过推导的方式生成一个列表
例:通过代码生成一个10以内的偶数列表
[x for x in range(1,10) if x % 2 == 0]
#生成式
使用圆括号,语法和推导式基本一致
a = (x for x in range(1,10) if x % 2 == 0)
3.元组(tuple):
1.元组是不可变类型(无法进行元素的删除,更新,添加),列表使用方括号,元组使用圆括号
2空元组可以使用()的方式定义,一个元素的元组定义形式为(value,)
3.元组陷阱,一个圆括号的元组定义和表达式是相同的,导致了歧义的出现,因此python规定一个圆括号为表达式,元组必须有逗号存在。
4.我们可以使用tuple将任何序列转为元组
1).不允许添加但可以重复,组合
tuple1 = tuple2+tuple3
tuple1*2
2).不允许删除其中元素,但可以删除整个元组
del tuple
3).元组的重要方法
len(tuple) 返回tuple的长度
max(tuple) 返回tuple的最大值
min(tuple) 返回tuple的最小值
4).元组的遍历:
for x in tuple :
4.字典(Dictionary)
字典的定义:{key,value}
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组
1.访问
2.修改
d[“one”] = 1
若有对应的key值则输出,没有则添加
d.get(“key”)
获取字典中key对应的值
dir.setdefault(key,[, default])
key若存在则输出对应值,key不存在则创建default,默认为none
print(d.setdefault(“no”,456))
print(d.setdefault(“jh”,456))
d.update(e)
将e中键-值对添加到字典d中,e可能是字典,也可能是键-值对序列
该方法没有返回值。
d.update({“three”:3,“four”:4}) #传一个字典print(d)
d.update(five=5,six=6) #传关键字print(d)
d.update([(“seven”,7),(“eight”,8)]) #传一个包含一个或多个元组的列表print(d)
d.update(([“nice”,9],[“ten”,10])) #传一个包含一个或多个列表的元组print(d)
d.update(zip([“eleven”,“twelve”],[11,12])) #传一个zip()函数print(d)
3.删除
d.popitem()
随机删除dic中一个元素
d.pop(“key”)
指定key删除一个元素
d.clear()
使⽤clear清理。
del dir
使⽤del删除字典。
print(“on” in d)
使⽤ in判定key是否存在。
4.字典的重要方法
len(dir)
dir.copy
dir.fromkeys(sqr,[,val])
创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
dir.get(key,default=none)
print(d.get(“nj”,405))
返回指定键的值,如果值不在字典中返回default值
5.遍历用法
dir.items()
for i,v in dir.items():
以列表返回可遍历的(键, 值) 元组数组
dir.keys() #或直接遍历字典返回的k是key的列表
for k in dir.keys():
以列表返回一个字典的所有键
dir.values()
for v in dir.values():
返回字典中所有的value值
5.集合(set):
集合(set)是一个无序的不重复元素序列
可以使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
支持 &交集 |并集 -差集
1.添加元素
s.add(x)
添加x进入集合s
s.update({1,3}) / s.update([1,4][2,5])
添加1,3元素进如s集合 / 添加4,2,5元素进入s集合
2.移除元素
s.remove(x)
移除元素,不存在回返回错误
s.pop()
随机弹出一个元素:
s.clear()
清除集合:
6.赋值、深复制、浅复制!!!
赋值是将原始对象多指向了一个变量
浅拷贝只能拷贝当前的引用,一旦拷贝者修改了某个元素,原始对象的最外层也会随之改变, 被拷贝者也会随之发生变化
深拷贝的为拷贝所有引用,不会发生上述情况
深复制
7.数据类型的转换方法:
tuple(list) 将任何序列转为元组
list(seq) 将元组转换为列表
str(list) 将列表转换为字符串形式