python基本数据类型及常用功能
1、数字类型 int -int(将字符串转换为数字) a = "123" print(type(a),a) b = int(a) print(type(b),b) num = "0011" v = int(num,base=16) print(v) PS:type打印数据类型,base=16是把num以16进制格式打印出十进制结果。 ? -bit_lenght(当前数字的二进制位数) age = 5 r = age.bit_length() print(r) PS:5的二进制数为101(三位数),所以打印结果为3。 ? 2、字符串类型 str -capitalize(首字母大写) test = "alex" v = test.capitalize() print(v) PS:输出Alex。 ? -lower和casefold和islower(前两个将所有字母变小写,casefold更高级,可以对很多未知的特殊符号变小写,最后一个判断是否为小写) test = "aLex" v1 = test.casefold() print(v1) v2 = test.lower() print(v2) test = "aLex" v = test.islower() print(v) PS:第一段输出alex,第二段输出False,upper和issupper同上,对字符串大写和判断字符串是否为大写。 ? -center和ljust和rjust(都是设置宽度,然后将内容居中、左对齐、右对齐) test = "aLex" v = test.center(20,"*") print(v) test = "aLex" v = test.ljust(20,"*") print(v) test = "aLex" v = test.rjust(20,"*") print(v) PS:分别输出********aLex********、aLex****************、****************aLex,20代指设置的总长度,”*“为填充内容且只能为一个字符(可为中文),不填默认空格。 ? -count(在字符串中寻找子序列出现次数) test = "aLexalexr" v1 = test.count(‘ex‘) print(v1) v2 = test.count(‘ex‘,5,6) print(v2) PS:表示在字符串中查找ex出现的次数,5,6表示查找范围限定在第5到第6个字符之间,v1输出2,v2输出0。 ? -endswith和startswith(以什么字符结尾和以什么字符开始) test = "aLex" v1 = test.endswith(‘ex‘) print(v1) v2 = test.startswith(‘ex‘) print(v2) PS:v1为True,v2为Flase,‘ex‘后面可以加参数表示在哪个区间中判断。 ? -find和index(从字符串从前往后找到第一次出现的子字符串的位置) test="alexalex" v1 = test.find(‘ex‘) print(v1) v2 = test.find(‘ex‘,8) print(v2) PS:v1输出2,v2表示在[5,8)区间里查找,如果查找无结果返回-1,index用法同上,但是查找无结果会报错,推荐使用find。 ? -format(格式化,将字符串中的占位符替换为指定的值) test = ‘i am {name},age{a}‘ print(test) v = test.format(name=‘alex‘,a=19) print(v) test = ‘i am {0},age{1}‘ print(test) v = test.format(‘alex‘,19) print(v) PS:两段代码输出结果一样,说明可以按序号顺序替换内容。 ? -isalnum和isalpha(前者判断字符串是否只包含字母和数字,后者判断是否为字母和汉字) test = "uasf_+" v = test.isalnum() print(v) test="as2df" v = test.isalpha() print(v) PS:第一段输出False,如果去掉_+则输出True;第二段输出False,如果去掉2则输出True。 ? -expandtabs(对字符串按字符数断句) test="usebcsdytsdvdve" v = test.expandtabs(6) print(v) PS:每6个字符断句,当遇到t自动断掉并占用剩下的字符数,打印结果为usebcs? ? dyt sdvdve。 ? -isdecimal和isdigit和isnumeric(判断输入是否是数字,第一个常用,因为能用于计算,第二个对特殊数字也能识别,第三个对中文数字也能识别) test="②" v1 = test.isdecimal() v2 = test.isdigit() print(v1,v2) test="二" v1 = test.isdecimal() v2 = test.isdigit() v3 = test.isnumeric() print(v1,v2,v3) PS:第一段v1输出False,v2输出True;第二段v1、v2输出False,v3输出True。 ? -isidentifier(用来判断变量名是否合法) a = "def" v = a.isidentifier() print(v) PS:输出True,isidentifier只能判断字母,数字和下划线的规则。 ? -isprintable(是否存在不可显示的字符) test = "oiuastdfkj" v = test.isprintable() print(v) PS:t打印出后不显示,所以输出False,去掉t则输出True。 ? -isspace(判断是否全部是空格) test = "" v = test.isspace() print(v) PS:空字符串输出False,全部是空格时才输出True。 ? -title和istitle(前者转换为每个单词首字母大写的标题格式,后者判断是否为标题格式) test = "Return True if all cased characters in S are uppercase and there is" v1 = test.title() print(v1) v2 = test.istitle() print(v2) PS:v1把所有单词首字母大写,v2输出False。 ? -join(将字符串中的每一个元素按照指定分隔符进行拼接) test = "女朋友是芳芳" v = " ".join(test) print(v) PS:输出“女 朋 友 是 芳 芳”,空格也可以替换为其他符号进行拼接。 ? -strip和lstrip和rstrip(从两侧、左侧、右侧移除指定字符串并优先匹配最多的子字符串,默认移除空格、t、n) test = " alex " v1 = test.strip() v2 = test.lstrip() v3 = test.rstrip() print(v1,v3) test = "alexxa" v = test.rstrip(‘xa‘) print(v) PS:第一段输出alex、alex(空格)、(空格)alex,第二段输出ale。 ? -maketrans和translate(创建对应字符和进行替换) v = "liuguifangxiaobaobei" m = str.maketrans("aeiou","12345") new_v = v.translate(m) print(new_v) PS:将字符串中的aeiou替换为12345,输出l35g53f1ngx314b14b23。 ? -partition和rpartition、split和rsplit(前两个从左和从右按照给定字符分割字符串为包含分割字符的三部分,后两个分割为不包括分割字符的多段) test = "testasdsddfg" v1 = test.partition(‘s‘) v2 = test.split(‘s‘) print(v1,v2) PS:v1输出[‘te‘,‘s‘,‘tasdsddfg‘],rpartition则从右边第一个s进行分割,v2输出[‘te‘,‘ta‘,‘d‘,‘ddfg‘],‘s’后还可以加参数设置分割几个s,rsplit则从右分割。 ? -splitlines(只能根据换行符进行分割) test = "liunguinfangn" v = test.splitlines(False) print(v) PS:输出[‘liu‘,‘gui‘,‘fang‘],参数True和False决定是否保留换行符。 ? -swapcase(所有字符大小写转换) test = "aLex" v = test.swapcase() print(v) PS:输出AlEX。 ? -replace(替换字符串中的子字符串) test = "liuguifangu" v = test.replace("gu",‘bbb‘) print(v) PS:输出"liubbbifangu",‘bbb‘后还可以加参数设置要替换的字符串个数。 ? 3、列表类型 list ? -append(在原来的列表后面追加) li = [11,22,33,44] li.append(5) li.append("alex") li.append([1234,2314]) print(li) PS:输出[11,44,‘alex‘,[1234,2314]]。 ? -clear(清空列表) li = [11,44] li.clear() print(li) PS:输出[],为空字符串。 ? -copy(拷贝字符串) li = [11,44] v = li.copy() print(v) PS:此拷贝为浅拷贝。 ? -count(计算元素出现的次数) li = [11,44] v = li.count(22) print(v) PS:输出2。 ? -extend(扩展原列表) li = [11,44] li.extend([9898,"刘贵芳"]) li.extend("刘贵芳") print(li) PS:输出[11,9898,‘刘贵芳‘,‘刘’,’贵‘,‘芳’],extend是一个可迭代对象,即按字符扩展,append则会以一个整体追加到后面。 ? -index(根据值获取索引位置) li = [11,44] v = li.index(22) print(v) PS:左侧开始索引,当索引到给定值则停止索引,输出1。 ? -insert(在指定索引位置插入元素) li = [11,44] li.insert(0,99) print(li) PS:表示在位置0插入99,输出[99,11,44]。 ? -pop(删除某个值,并可获取删除的值) li = [11,44] v = li.pop() print(li) print(v) PS:pop默认参数则删除最后一个,可以加参数指定删除值,输出li为[11,33],v输出44。 ? -remove(删除列表中的指定值) li = [11,44] li.remove(22) print(li) PS:左侧开始检索,删除值后停止检索,输出[11,44]。 ? -reverse(翻转列表) li = [11,44] li.reverse() print(li) PS:输出[44,11]。 ? -sort(对列表进行排序) li = [11,33,] li.sort() print(li) li.sort(reverse=True) print(li) PS:输出[11,44]和[44,11],默认从小到大排序。 ? 4、元组类型 tuple ? -count(获取指定字符在元组中出现的次数) tu = (11,44,) v = tu.count(22) print(v) PS:输出2。 ? -index(根据值获取索引位置) tu = (11,) v = tu.index(22) print(v) PS:左侧开始检索,当索引到给定值则停止索引,输出1。 ? 5、字典 dict ? -fromkeys(根据序列创建字典,并指定统一的值) v = dict.fromkeys(["k1",123,"999"],123) print(v) PS:输出{123:123,‘k1‘:123,‘999‘:123},注意字典是无序的。 ? -get(根据key获取值) dic = {"k1":‘v1‘,"k2":‘v2‘} v = dic.get(‘k1‘,111) print(v) PS:输出v1,如果k1不在字典里,则输出参数111,如无参数默认输出None。 ? -pop和popitem(删除并获取值) dic = {"k1":‘v1‘,"k2":‘v2‘} v = dic.pop(‘k1‘,90) print(dic,v) k,v = dic.popitem() print(dic,k,v) PS:前者删除给定键的键值并返回值,如果不存在键则返回参数90;后者随机删除一对键值并返回键值对。 ? -setdefault(在字典中设置值) dic = {"k1":‘v1‘,"k2":‘v2‘} v = dic.setdefault(‘k11‘,‘123‘) print(dic,v) PS:输出{‘k1‘:‘v1‘,‘k11‘:‘123‘‘‘,‘k2‘:‘v2‘}? 123,若字典中包含给定键,则返回该键对应的值,否则返回为该键设置的值。 ? -update(更新字典) dic = {"k1":‘v1‘,"k2":‘v2‘} dic.update(k1=123,k3=456,k5="asdf") print(dic) PS:输出{‘k1‘:123,‘k5‘:‘asdf‘,‘k2‘:‘v2‘,‘k3‘:345},当字典里有给出的key时更新值,没有时则加入键值对。 ? -keys和values和items(提取字典的全部键、值、键值对) dic = {"k1":‘v1‘,"k2":‘v2‘} v1 = dic.keys() v2 = dic.values() v3 = dic.items() print(v1,v3) PS:字典还有clear(清除)、copy(拷贝)等用法和其他数据类型类似,就不提了(主要是懒)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |