数据类型及常用方法
Posted linxidong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型及常用方法相关的知识,希望对你有一定的参考价值。
可变类型与不可变类型
1、可变类型
值改变,id不变,说明是直接改变原值,是可变类型
2、不可变类型
值改变,id也跟着改变,说明是产生了新的值,是不可变类型
整型(int)与浮点型(float)
#整型
#用途:记录电话号码,年龄,QQ号等纯数字
#定义方式
age=18 #age=int(18) print(type(age)) int(‘abadf‘) #报错 int(‘10.1‘) #报错 int(‘101‘) #int只能将字符串中包含纯数字转成整型 # 十进制转成其他进制 print(bin(12)) print(oct(12)) #12 =>1*(8**1) + 2*(8**0) print(hex(16)) # 进制转换(了解**) # 其他进制转成十进制 print(int(10,2)) print(int(10,8)) print(int(10,16))
#浮点型float
作用:薪资,身高,体重,体质参数等浮点数相关
salary=3000.3 #本质salary=float(3000.3)
ps:整型,浮点型:存一个值,不可变
字符串(str)
#作用:名字,性别,国籍,地址等描述信息
#定义:在单引号\双引号\三引号内,由一串字符组成
name=‘egon‘
#优先掌握的操作: #1、按索引取值(正向取+反向取) :只能取 #2、切片(顾头不顾尾,步长) #3、长度len #4、成员运算in和not in #5、移除空白strip #6、切分split #7、循环
# 需要你掌握的
#1、strip,lstrip,rstrip
#2、lower,upper
#3、startswith,endswith
#4、format的三种玩法
#5、split,rsplit
#6、join
#7、replace
#8、isdigit # 判断字符串中包含的是否为纯数字
1.strip,lstrip,rstrip方法:方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 ps:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符. name = ‘*egon**‘ ptint(name.strip(‘*‘)) ##结果:egon ptint(name.lstrip(‘*‘)) ##结果:egon** ptint(name.rstrip(‘*‘)) ##结果:**egon 2.lower,upper方法:转换字符串中所有大小写字符。 name=‘Egon‘ print(name.lower()) ##结果:egon print(name.upper()) ##结果:EGON 3.startswith,endswith方法:用于判断字符串是否以指定开头/后缀结尾,如果以指定开头/后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。 name=‘alex_SB‘ print(name.endswith(‘SB‘)) ##结果:True print(name.startswith(‘ex‘)) ##结果:Flase 4.format()方法:可以接受不限个参数,位置可以不按顺序。 res=‘ ‘.format(‘egon‘,18,‘male‘) ##结果:egon 18 male ps:输出默认位置 res=‘1 0 1‘.format(‘egon‘,18,‘male‘) ##结果:18 egon 18 ps:输出指定位置 res=‘name age sex‘.format(sex=‘male‘,name=‘egon‘,age=18) ##结果:egon 18 male ps:输出指定位置 5.split()方法:通过指定分隔符对字符串进行切片 # 例题: # 将以下数据存储为字典类型 # 数据:info = "name:Owen|age:18|gender:男" # 结果:‘name‘: ‘Owen‘, ‘age‘: 18, ‘gender‘: ‘男‘ info = "name:Owen|age:18|gender:男" infos = info.split(‘|‘) info_dic = for i in infos: k,v = i.split(‘:‘) info_dic = k[v] print(info_dic) 6.join()方法:用于将序列中的元素以指定的字符连接生成一个新的字符串。 tag=‘ ‘ print(tag.join([‘egon‘,‘say‘,‘hello‘,‘world‘])) #可迭代对象必须都是字符串 输出结果:egonsayhello 7.replace()方法:把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 name=‘alex say :i have one tesla,my name is alex‘ print(name.replace(‘alex‘,‘SB‘,1)) 输出结果:SB say :i have one tesla,my name is alex 8.isdigit()方法:可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法 age=input(‘>>: ‘) print(age.isdigit())
# 需要了解的内置方法
#1、find,rfind,index,rindex,count
#2、center,ljust,rjust,zfill
#3、expandtabs
#4、captalize,swapcase,title
#5、is数字系列
#find,rfind,index,rindex,count name=‘egon say hello‘ print(name.find(‘o‘,1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引 # print(name.index(‘e‘,2,4)) #同上,但是找不到会报错 print(name.count(‘e‘,1,3)) #顾头不顾尾,如果不指定范围则查找所有 #center,ljust,rjust,zfill name=‘egon‘ print(name.center(30,‘-‘)) print(name.ljust(30,‘*‘)) print(name.rjust(30,‘*‘)) print(name.zfill(50)) #用0填充 #expandtabs name=‘egon\thello‘ print(name) print(name.expandtabs(1)) #captalize,swapcase,title print(name.capitalize()) #首字母大写 print(name.swapcase()) #大小写翻转 msg=‘egon say hi‘ print(msg.title()) #每个单词的首字母大写 #is数字系列 #在python3中 num1=b‘4‘ #bytes num2=u‘4‘ #unicode,python3中无需加u就是unicode num3=‘四‘ #中文数字 num4=‘Ⅳ‘ #罗马数字 #isdigt:bytes,unicode print(num1.isdigit()) #True print(num2.isdigit()) #True print(num3.isdigit()) #False print(num4.isdigit()) #False #isdecimal:uncicode #bytes类型无isdecimal方法 print(num2.isdecimal()) #True print(num3.isdecimal()) #False print(num4.isdecimal()) #False #isnumberic:unicode,中文数字,罗马数字 #bytes类型无isnumberic方法 print(num2.isnumeric()) #True print(num3.isnumeric()) #True print(num4.isnumeric()) #True #三者不能判断浮点数 num5=‘4.3‘ print(num5.isdigit()) print(num5.isdecimal()) print(num5.isnumeric()) ‘‘‘ 总结: 最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景 如果要判断中文数字或罗马数字,则需要用到isnumeric ‘‘‘ #is其他 print(‘===>‘) name=‘egon123‘ print(name.isalnum()) #字符串由字母或数字组成 print(name.isalpha()) #字符串只由字母组成 print(name.isidentifier()) print(name.islower()) print(name.isupper()) print(name.isspace()) print(name.istitle())
ps:字符串类型:只能够存一个值,有序且不可变
列表(list)
# 1 用途:存放多个值,可以根据索引存取值
# 2 定义方式:在[]内用逗号分割开多个任意类型的值
l=[‘egon‘,‘lxx‘,‘yxx‘] # l=list([‘egon‘,‘lxx‘,‘yxx‘]) l1=list(‘hello‘) #list就相当于调用了一个for循环依次取出‘hello‘的值放入列表 print(l1) l2=list(‘x‘:1,‘y‘:2,‘z‘:3) print(l2) list(10000) # 报错
# 3 常用操作+内置的方法
#优先掌握的操作:
#1、按索引存取值(正向存取+反向存取):即可存也可以取 l=[‘egon‘,‘lxx‘,‘yxx‘] print(l[0]) l[0]=‘EGON‘ print(l) print(l[-1]) print(l[3]) l[0]=‘EGON‘ # 只能根据已经存在的索引去改值 l[3]=‘xxxxxxxx‘ #如果索引不存在直接报错 #2、切片(顾头不顾尾,步长) l=[‘egon‘,‘lxx‘,‘yxx‘,444,555,66666] print(l[0:5]) print(l[0:5:2]) print(l[::-1]) #3、长度 l=[‘egon‘,‘lxx‘,‘yxx‘,444,555,66666,[1,2,3]] print(len(l)) #4、成员运算in和not in l=[‘egon‘,‘lxx‘,‘yxx‘,444,555,66666,[1,2,3]] print(‘lxx‘ in l) print(444 in l) #5、追加 l=[‘egon‘,‘lxx‘,‘yxx‘] l.append(44444) l.append(55555) print(l) #6、往指定索引前插入值 l=[‘egon‘,‘lxx‘,‘yxx‘] l.insert(0,11111) print(l) l.insert(2,2222222) print(l) # 一次性添加多个元素 l = [‘jason‘,‘nick‘] l.extend([‘tank‘,‘sean‘]) #7、删除 l=[‘egon‘,‘lxx‘,‘yxx‘] # 单纯的删除值: # 方式1: del l[1] # 通用的 print(l) # 方式2: res=l.remove(‘lxx‘) # 指定要删除的值,返回是None print(l,res) # 从列表中拿走一个值 res=l.pop(-1) # 按照索引删除值(默认是从末尾删除),返回删除的那个值 print(l,res) #8、循环 l=[‘egon‘,‘lxx‘,‘yxx‘] for item in l: print(item)
# 需要掌握的操作
l=[‘egon‘,‘egon‘,‘lxx‘,‘yxx‘,444,555,66666] print(l.count(‘egon‘)) print(l.index(‘egon‘)) print(l.index(‘yxx‘,0,1)) l.clear() items=[‘a‘,‘b‘,‘c‘] items=‘hello‘ for item in items: l.append(item) l.extend(items) print(l) l=[‘egon‘,‘egon‘,‘lxx‘,‘yxx‘,444,555,66666] l.reverse() print(l) nums=[3,-1,9,8,11] nums.sort(reverse=True) print(nums)items=[1,‘a‘,‘b‘,2items.sort()
ps:列表类型:能存多个值,有序,可变
队列,堆栈
l=[‘a‘,‘b‘,‘c‘] print(id(l)) l.append(‘d‘) print(id(l)) # 队列:先进先出 l=[] # # 入队 l.append(‘first‘) l.append(‘second‘) l.append(‘third‘) print(l) # # 出队 print(l.pop(0)) print(l.pop(0)) print(l.pop(0)) # 堆栈:先进后出 l=[] # 入栈 l.append(‘first‘) l.append(‘second‘) l.append(‘third‘) print(l) # 出栈 print(l.pop()) print(l.pop()) print(l.pop())
以上是关于数据类型及常用方法的主要内容,如果未能解决你的问题,请参考以下文章