数据类型详解一

可变不可变类型 可变类型:值改变,但是id不变,证明就是在改变原值,是可变类型 不可变类型:值改变,但是id也跟着改变,证明产生了新的值,是可变类型 不可变数据类型:整型int、浮点型float、字符串str 可变数据类型:列表list、字典dict 数字类型 一、整型int===============================基本使用===============================1、用途:记录年龄、等级、数量、QQ号等整型数字相关2、定义方式: age = 10 # 本质 age = int(10) int()被称为工厂函数数据类型转换: 只能将纯数字的字符串转成intx = int('123123') # 正确x = int('12.3') # 错误x = int(12.3) # 正确3、常用操作+内置的方法 进行算术运算与比较运算 二、浮点型float===============================基本使用===============================1、用途:记录身高、薪资、体重等浮点数相关2、定义方式salary = 10.1 # 本质salary = float(10.1)数据类型转换: 将只包含数值型字符的字符串转成floatx=float('3.1') # 正确x = float('12') # 正确===============================该类型总结===============================只存一个值不可变示例:x=3.1print(id(x))x=4.3print(id(x)) 字符串类型==============================基本使用==============================1、用途:记录描述性质的状态2、定义方式:在单引号、双引号、三引号内包含一串字符串msg = 'hello' # 本质 msg = str('hello')str(hello) # 错误,因为没有引号就是变量名str(heinen'hehe"heheh) # 错误,因为是变量名 数据类型转换:所有类型都可以被str转成字符串类型3、常用操作 3.1 按索引取值(正向取、反向取):只能取 msg = ‘hello’ print(msg[0],type(msg[0])) # 取第0位 print(msg[-1]) # 取倒数第1位 print(msg[-2]) # 取倒数第2位 msg[0] = 'H' # 错误,因为不能按照索引改值,是不可变型 3.2 切片(顾头不顾尾,步长,按照索引来的) 只是拷贝,因为是不可变 msg = 'hello' msg[0:3:1] # 等同于msg[0:3],取第0 1 2位组成字符串,即'hel' msg[:] # 就是msg本身 msg[1:] #从第2位开始取,默认步长为1 msg[:3:] #从第0位开始取,到第2位,默认步长为1 msg[::2] # 取第0 2 4位组成字符串,即'hlo' 倒着取 msg[-1:-5:-1] # 永远记住顾头不顾尾,取倒数第一到四位,步长位-1,不能是+1 msg[-1::-1] # ‘olleh’ msg[::-1] 哪个位置没参数,哪个位置就是默认值,但是倒着取时,步长必须有,因为默认步长时+1 虽然字符串可以取 但是还是列表方便 3.3 长度len msg = 'hello word' 只有能含有多个值得数值类型才能用len() 3.4 成员运算in或者not in:判断一个子字符串是否在于大字符串中 msg = 'kevin is dsb' print('kevin' in msg) print('kevin111' in msg) print('aaa' not in msg) # 等同于 print(not 'aaa' in msg) 但是这个不推荐 3.5 移除空白strip:用来去除字符串左右俩边的字符,不指定则默认取出的是空格 print('\n') msg = ‘ he llo ’ res = msg.strip() print(res) 函数参数中看到self当作不存在 print('**********eg***on****'.strip('*')) # 从左边开始,找到*就删除,再从右边开始,找到*就删除 print('*******=-\/****egon#@$******'.strip('*=-\/$@#')) # 只要strip中的参数在字符的左右俩边就能都被清除 3.6 切分split:针对有规律的字符串,按照某种分隔符切成列表 info = 'egon : 18 : male' res = info.split(':') cmd = 'get | a.txt | 33333' print(cmd.split('|',1)) 用:作为连接符号将纯字符串的列表拼接成一个字符串 l = ['egon','18','male'] res = l[0] + l[1] + l[2] 上面俩行等同于: res = ':'.join(l) 3.7 循环 for item in ‘hello’: print(item) 需要掌握的操作 1、strip,lstrip,rstrip print('*******egon*******'.stirp('*')) print('*******egon*******'.lstrip('*')) print('*******egon*******'.rstrip('*')) 2、lower,upper print('Abc123'.lower()) print('Abc123'.upper()) 3、startswitch,endswitch msg = 'alex is dsb' print(msg.startswith('alex')) print(msg.endswith('b')) 4、format的三种玩法 res = 'my name is %s my age is %s' % ('egon,18) 使用%s 时,%左边%s的数量必须和%右边参数的数量相等,而且顺序相对应 res = 'my name is {name} ,my age is {age}.'.format(age = 18, = 'egon) res = 'my name is {} ,my age is {}.'.format('egon',18) # {}内为空就是按照位置传值 res = 'my name is {0} {1},my age is {1} {1} {1} {1}.'.format('egon',18) 5、split,rsplit msg = 'a:b:c:d' print(msg.split(':',1)) print(msg.rsplit(':',1)) 6、replace msg = 'kevin is kevin is hahaha' res = msg.replace('kevin','sb',1) print(res) 7、isdigit print('123123'.isdigit()) # 如果字符串是由纯数字组成的,则返回True print('123123 '.isdigit()) print('123123asdf'.isdigit()) print('12312.3'.isdigit())了解 1、find、rfind、index、reindex、count name='egon say hello' print(name.find('o',1,3)) # 顾头不顾尾,找不到则返回-1,不会报错,找到了则显示索引 print('123 ke123ke'.find('ke')) # 从第0位开始找,找到第一个后,返回第一个目标字符的起始位置(索引),如果没有返回-1,不会报错 print('123 ke123ke'.find('xxx')) print('123 ke123ke'.rfind('ke')) # 从倒数第一位开始找,找到第一个后,返回第一个目标字符的正数的起始位置(索引),如果没有返回-1,不会报错 name='egon say hello' print(name.index('e',2,4)) # 顾头不顾尾,找到了则显示索引,但是找不到会报错 print('123 ke123ke'.index('ke')) # 从第0位开始找,找到第一个后,返回第一个目标字符的起始位置(索引),如果没有,会报错 print('123 ke123ke'.index('xxx')) print('123 ke123ke'.rindex('ke')) # 从倒数第一位开始找,找到第一个后,返回第一个目标字符的正数的起始位置(索引),如果没有,会报错 name='egon say hello' print(name.count('e',1,3)) # 顾头不顾尾,如果不指定范围则查找所有 print('123 ke123ke'.count('ke',0,6) # 从起始位(0)到终止位(5)开始查找‘ke’,如果存在,则返回个数,如果没有,则返回0 2、center,ljust,rjust,zfill print('egon'.center(50,'*')) #**********************engon*********************** print('egon'.ljust(50,'*')) # egon********************************************** print('egon'.rjust(50,'*')) # **********************************************egon print('egon'.rjust(50,'0')) # 0000000000000000000000000000000000000000000000egon print('egon'.zfill((50)) # 用0填充 0000000000000000000000000000000000000000000000egon name='egon' print(name.center(30,'-')) print(name.ljust(30,'*')) print(name.rjust(30,'*')) print(name.zfill(50)) 3、expandtabs:把字符串中的tab符号('\t')转为空格,tab符号('\t')默认的空格数是 8。 name='egon\thello' print(name) print(name.expandtabs(1)) 4、captalize,swapcase,title print('abcdef dddddd'.capitalize()) print('abcAef dddddd'.swapcase()) print('abcAef dddddd'.title()) 5、is数字系列 num1=b'4' # bytes num2=u'4' # unicode,python3中无需加u就是unicode num3='四' # 中文数字 num4='Ⅳ' # 罗马数字 #isdigt:bytes,unicode bytes与阿拉伯数字组成的字符串 print(num1.isdigit()) # True print(num2.isdigit()) # True print(num3.isdigit()) # False print(num4.isdigit()) # Flase #isdecimal:uncicode #bytes类型无isdecimal方法 阿拉伯数字组成的字符串 print(num2.isdecimal()) # True print(num3.isdecimal()) # False print(num4.isdecimal()) # Flase #isnumberic:unicode,中文数字,罗马数字 #bytes类型无isnumberic方法 阿拉伯数字\中文\罗马组成的字符串 print(num2.isnumeric()) print(num3.isnumeric()) print(num4.isnumeric()) #三者不能判断浮点数 num5='4.3' print(num5.isdigit()) print(num5.isdecimal()) print(num5.isnumeric()) 总结:最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景,如果要判断中文数字或罗马数字,则需要用到isnumeric 6、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())====================================该类型总结====================================存一个值有序不可变msg=' hello 'msg.strip()print(msg)列表类型===============================基本使用===============================基本使用1、用途:按照位置记录多个值,索引对应值2、定义方式:在[ ]内用逗号分隔开多个任意类型的值l=['a',11,11.3,] # l=list(['a',11,11.3,])数据类型转换:凡是能够被for循环遍历的数据类型都可以能转换成listres=list('hello')res=list(123) # 报错print(res)res=list({'a':1,'b':2,'c':3}) # ['a','b','c' ]print(res)3、常用操作+内置方法优先掌握的操作: 3.1、按索引存取值(正向存取+反向存取):即可存也可以取 l=['a','b','c','d','e'] print(l[0]) print(l[-1]) print(id(l)) l[0]='A' print(id(l)) 强调强调强调!!!:对于不存在的索引会报错 l[5]='AAAA' dic={"k1":111} dic['k2']=2222 print(dic) 3.2、切片(顾头不顾尾,步长) l=['a','b','c','d','e'] print(l[1:4]) print(l[::-1]) 3.3、长度 l=['a','b','c','d','e'] print(len(l)) 3.4、成员运算in和not in l=['a','b','c','d','e'] print('a' in l) 3.5、追加与insert l=['a','b','c','d','e'] l.append('xxx') l.append('yyy') print(l) l.insert(0,'xxxx') print(l) 3.6、删除 l=['a','bbb','c','d','e'] del是一种通用的删除操作,没有返回值 del l[0] print(l) dic={'k1':1} del dic['k1'] print(dic) l.remove(指定要删除的那个元素),没有返回值 res=l.remove('bbb') print(l) print(res) l.pop(指定要删除的那个元素的索引),返回刚刚删掉的那个元素 l=['a','bbb','c','d','e'] l.pop(-1) res=l.pop(1) print(l) print(res) 3.7、循环 l=['a','b','c','d','e'] for item in l: print(item) 练习: 队列:先进先出 进队 l.append('first') l.append('second') l.append('third') print(l) 出队 print(l.pop(0)) print(l.pop(0)) print(l.pop(0)) 堆栈:后进先出 需要掌握的操作 l=['aaa','bb',345] l.clear() l.append([1,2,3]) for i in [1,2,3]: l.append(i) l.extend([1,2,3]) l.reverse() 只有在类中中所有元素都是同种类型的情况下才能用sort排序 l=[1,3,2] l.sort(reverse=True) l=['z','d','a'] l.sort() print(l)===============================该类型总结===============================存多个值有序可变

你可能感兴趣的:(数据类型详解一)