python基本数据类型
运算符
(1)“+”,两个对象相加
(2)“-”,两个对象相减
(3)“*”、两个对象相乘
(4)“/”,两个对象相除
(5)“%”,相除返回商的余数
(6)“//”,返回商的整数部分
(7)“**”,返回x的y次方幂结果
比较运算
(1)"=",等于,用于比较两个对象是否相等
(2)“>”,大于,用于比较大于号左边的对象是否大于右边的对象
(3)“<”,小于,用于比较小于号左边的对象是否小于右边的对象
(4)“!=”,不等于,用于比较两个对象是否不相等
(5)“<>”,不等于,同!=
(6)“>=”,大于等于,用于比较左边对象是否大于等于右边对象
(7)“<=”小于等于,用于比较左边对象是否小于等于右边对象
布尔值>>>>bool
(1)True:表示结果成立,为真,用“1”表示
(2)False:表示结果不成立,为假,用“0”表示
注意:以下(None ,"", () ,[] ,{} ,0 )用bool判定都为False
逻辑运算
(1)“和”》》》》》用"and"表示,and两边条件都成立则返回true,只有一个成立或两个都不成立则返回False
(2)“或”》》》》》用“or”表示,or两边两件至少有一边条件成立则返回True
注意:and 与or运算没有先后顺序,在python中遵循从左往右的顺序做判断,如果有括号,括号里的运算优先
(3)“in”》》》》表示在, a in b,表示a在b里
(4)"not in">>>>>表示不在,a not in b,表示a不在b里
基本数据类型
(1)数字>>>>int类型
注意:数字不可进行迭代
1.int(x, base=10)表示将X字符串转换为十进制数字表示
num=a v=int(num,base=16)#int(x, base=10)表示将X字符串转换为十进制数字表示 print(v)#>>>>>11
2.bit_length(self)表示当前数字用二进制表示需要多少位数
num=11 v=num.bit_length() #bit_length(self)表示当前数字用二进制表示需要多少位数 print(v)>>>>#4
(2)字符串》》》》》str类型
#######字符串一旦创建,不可修改
#######可以迭代,有序
字符串用法:
1.capitalize(self)表示将字符串首字母变大写
n1="aaabbbccc" n2="apple" v=n1.capitalize()#capitalize(self)表示将字符串首字母变大写 print(v)>>>>>>#Aaabbbccc
2.casefold(self)表示将字符串中的大写字母全部转换为小写
n1 = "aaabBBccc" n2 = "apple" v=n1.casefold()#casefold(self)表示将字符串中的大写字母全部转换为小写 print(v)#》》》》》aaabbbccc
3.center表示设置宽度,并将内容居中
n1 = "aaabBBccc" n2 = "apple" v=n1.center(20,"*")#center表示设置宽度,并将内容居中,20代表字符串总位数,*表示空位用它表示 print(v)#>>>>>>*****aaabBBccc******
4. count表示统计字符串中有多少子序列
n1 = "aaabBBccc" n2 = "apple" v=n1.count("a",1,7)#count表示统计字符串中有多少子序列,后面参数表示起始位置与结束位置 print(v)#>>>>>2
5.endswith表示以什么结尾,参数表示起始位置与结束位置,若存在,返回true,否则返回false
同理,startswith表示以什么开始
n1 = "aaabBBccc" n2 = "apple" v=n1.endswith("c",1,8)#endswith表示以什么结尾,参数表示起始位置与结束位置,若存在,返回true,否则返回false print(v)#>>>>True
6.find表示字符串从开始往后找,找到第一个之后,获取其位置,参数表示起始位置与结束位置,若没找到返回“-1”
n1 = "aaabBBccc" n2 = "apple" v=n1.find("b",1,7)#find表示字符串从开始往后找,找到第一个之后,获取其位置,参数表示起始位置与结束位置,若没找到返回“-1” print(v)#>>>>>>3
7.index表示字符串从开始往后找,找到第一个之后,获取其位置,参数表示起始位置与结束位置,若没找到会报错
n1 = "aaabBBccc" n2 = "apple" v=n1.index("b",1,8)#index表示字符串从开始往后找,找到第一个之后,获取其位置,参数表示起始位置与结束位置,若没找到会报错 print(v)#>>>>>>3
8.format表示格式化,将将一个字符串中的占位符替换为指定的值
test = 'i am {name}, age {a}' v = test.format(name='alex',a=19)#format表示格式化,将将一个字符串中的占位符替换为指定的值 print(v)#>>>>>i am alex, age 19
test = 'i am {0}, age {1}' v = test.format('alex',19)#用下标也可替换为指定的值 print(v)#>>>>>>>i am alex, age 19
9.format_map表示格式化,将指定的值替换为字符串中的占位符
test = 'i am {name}, age {a}' v2 = test.format_map({"name": 'alex', "a": 19})#format_map表示格式化,将指定的值替换为字符串中的占位符 print(v2)#>>>>>>i am alex, age 19
10.isalnum表示字符串中是否只含有字母和数字或汉字,若结果为真则返回True,否则False
test = "123" v = test.isalnum()#isalnum表示字符串中是否只含有字母和数字或汉字,若结果为真则返回True,否则False print(v)#>>>>>>True
11.isalpha判断字符串中是否只含有字母
n1="aaa" v=n1.isalpha()#isalpha判断字符串中是否只含有字母 print(v)#>>>>>>>True
12.isdecimal判断当前输入字符串是否是数字
isdigit判断字符串是否为二进制数字及特殊符号表示的数字,但不能识别文字形式数字
isnumeric判断字符串是否为数字,可以识别各种形式表示的数字
n1="二" n2="2②" n3="2②二" v1=n1.isdecimal()#isdecimal判断当前输入字符串是否是数字,只能判断是否是十进制形式数字 v2=n2.isdigit()#isdigit判断字符串是否为二进制数字及特殊符号表示的数字,但不能识别文字形式数字 v3=n3.isnumeric()#isnumeric判断字符串是否为数字,可以识别各种形式表示的数字 print(v1)#>>>>>>>>False print(v2)#>>>>>>>True print(v3)#>>>>>>>>True
13.isprintable判断是否存在不可显示的字符,若存在返回False,否则True,("\n"为换行符,“\t”为制表,都为不可显示字符)
n1="fjkajfk\nafkfj" v1=n1.isprintable()#isprintable判断是否存在不可显示的字符,若存在返回False,否则True print(v1)#》》》》False
14.isspace判断是否全是空格
n1=" " v1=n1.isspace()#isspace判断是否全是空格 print(v1)#>>>>>>>True
15.istitle判断是否是标题,即每个子序列是否是大写字母开头
title将字符串转换成标题,即每个子序列都是大写字母开头
n1="Afjkdjf ejfiejf mkejfkejfk" v1=n1.istitle()#istitle判断是否是标题,即每个子序列是否是大写字母开头 v2=n1.title()#title将字符串转换成标题,即每个子序列都是大写字母开头 print(v1)#》》》》False print(v2)#》》》》Afjkdjf Ejfiejf Mkejfkejfk
16.join将字符串中的每一个元素按照指定分隔符进行拼接
n1="今天是星期几" v1="*".join(n1)#join将字符串中的每一个元素按照指定分隔符进行拼接 print(v1)#>>>>>>今*天*是*星*期*几
17.islower判断字符串是否都是小写
lower将字符串全转换成小写
isupper判断字符串是否全为大写
upper将字符串全部转换成大写
test = "Apple" v1 = test.islower()#islower判断字符串是否都是小写 v2 = test.lower()#lower将字符串全转换成小写 print(v1, v2)#>>>>>>>>>False apple v1 = test.isupper()#isupper判断字符串是否全为大写 v2 = test.upper()#upper将字符串全部转换成大写 print(v1,v2)#》》》False APPLE
18.lstrip从左边移除指定字符串,有限最多匹配,可以移除空白
rstrip从右边移除指定字符串,有限最多匹配
strip从两边边移除指定字符串,有限最多匹配
test = "aexxxxaxa" v1= test.lstrip('xa')#lstrip从左边移除指定字符串,有限最多匹配 v2 = test.rstrip('axx')#lstrip从右边移除指定字符串,有限最多匹配 v3 = test.strip('xa')#lstrip从两边边移除指定字符串,有限最多匹配 print(v1)#》》》》》exxxxaxa print(v2)#>>>>ae print(v3)#》》》》》e
19.maketrans创建对应关系
v = "asidufkasd;fiuadkf;adfkjalsdjf" m = str.maketrans("aeiou", "12345")#maketrans创建对应关系 new_v = v.translate(m) print(new_v)
20.partition从左边以指定字符将字符串分割三部分
rpartition从右边以指定字符将字符串分割三部分
test = "testasdsddfg" v = test.partition('s')#partition从左边以指定字符将字符串分割三部分 print(v)#》》》》》('te', 's', 'tasdsddfg') v = test.rpartition('s')#rpartition从右边以指定字符将字符串分割三部分 print(v)#》》》》》('testasd', 's', 'ddfg')
21.split以指定字符将字符串从左往右分割为几部分,输出结果不包含分割字符,为列表形式
rsplit以指定字符将整个字符串分割,不包含分割字符
test = "testasdsddfg" v = test.split('s',2)#split以指定字符将字符串从左往右分割为几部分,输出结果不包含分割字符,为列表形式 print(v)#>>>>>['te', 'ta', 'dsddfg'] v2=test.rsplit("s")#rsplit以指定字符将整个字符串分割,不包含分割字符 print(v2)#》》》》》['te', 'ta', 'd', 'ddfg']
22.splitlines分割,只能根据,true,false:是否保留换行
test = "asdfadfasdf\nasdfasdf\nadfasdf" v = test.splitlines(False)#splitlines分割,只能根据,true,false:是否保留换行 print(v)#>>>>>['asdfadfasdf', 'asdfasdf', 'adfasdf']
23.swapcase大小写转换
test = "appLE" v = test.swapcase()#swapcase大小写转换 print(v)#>>>>>APPle
24.isidentifier判断字符串是否以字母、下划线开头
a = "a_ajajf" v = a.isidentifier()#isidentifier判断字符串是否以字母、下划线开头 print(v)#>>>>True
25.replace表示将指定字符串替换,参数表示要替换的数量,默认从左往右全部替换,参数表示需要替换的数量
test = "appleppal" v = test.replace("pp",'www')#replace表示将指定字符串替换,参数表示要替换的数量,默认从左往右全部替换,参数表示需要替换的数量 print(v)#>>>>>awwwlewwwal
26.expandtabs表示断句,以参数为宽度从头到尾开始断句,遇到"\t"则空格补全一段宽度,没有出现"\t"则继续开始下一段
n1="ajkajkajk\tjkjqiqjijqi" v=n1.expandtabs(13)#expandtabs表示断句,以参数为宽度从头到尾开始断句,遇到"\t"则空格补全一段宽度,没有出现"\t"则继续开始下一段 print(v)#》》》》》》ajkajkajk jkjqiqjijqi,结果说明后一段j前面一段长度为13,k后用空格补全
(3)列表》》》》》list
######列表用[]表示,里面的每个元素用",'隔开,列表创建完可以进行修改,列表元素在内存中以链表形式存在
######列表中的元素可以是 数字,字符串,列表,布尔值..所有的都能放进去
######列表有序,元素可以被修改,删除,增加
列表用法:
(1)循环 for
li = ["a","faaaa",11132,["jfakjfkalj","jfkjfk",454545],44444] for i in li: print(i)#循环输出列表中每一个元素 print(li[2:3] )#切片输出的结果是列表
(2) 索引取值,对象.[下标]
(3)索引修改,对象.[下标]=新值
(3)索引删除 del.对象[下标]
(4)切片取值,对象.[下标:下标]
(5)切片删除,对象.[下标:下标]
(6)切片修改,对象.[下标:下标]=[新值,新值]
in用法v="a" in li#判断元素在不在列表里面,注意元素指用逗号隔开的整个元素
列表内置方法
(1)append追加,表示将值作为一个元素追加到列表最后一个元素后面
li = [11, 22, 33, 44, 55] li.append(33)#append追加,表示将值作为一个元素追加到列表最后一个元素后面 print(li)#》》》》》[11, 22, 33, 44, 55, 33]
(2)clear清空列表
li = [11, 22, 33, 44, 55] li.clear()#clear清空列表 print(li)#》》》》》[]
(3)copy拷贝(浅拷贝)
li = [11, 22, 33, 44, 55] v=li.copy()#copy拷贝(浅拷贝) print(v)#>>>>>[11, 22, 33, 44, 55]
(4)count计算元素出现的次数
li = [11, 22, 33, 44,33,.55] v=li.count(33)#count计算元素出现的次数 print(v)#>>>>>>>2
(5)extend拓展原列表,拓展元素必须可以迭代,且对象会以元素形式添加到原列表后面
li = [11, 22, 33, 44,33,.55] li.extend("abcd")#extend拓展原列表,拓展元素必须可以迭代,且对象会以元素形式添加到原列表后面 print(li)#>>>>>>>>.[11, 22, 33, 44, 33, 0.55, 'a', 'b', 'c', 'd']
(6)index查找对象并输出对象在列表中的下标,从左边开始,参数代表起始位置与结束位置
li = [11, 22, 33, 44,33,.55] v=li.index(33)#index查找对象并输出对象在列表中的下标,从左边开始,参数代表起始位置与结束位置 print(v)#>>>>>>>2
(7)insert在指定位置插入元素
li = [11, 22, 33, 44,33,.55] li.insert(2,123)#insert在指定位置插入元素 print(li)#>>>>>>>>>[11, 22, 123, 33, 44, 33, 0.55]
(8)pop删除指定下标对应的元素,默认删除最后一个元素
li = [11, 22, 33, 44,33,.55] li.pop(3)#pop删除指定下标对应的元素,默认删除最后一个元素 print(li)#>>>>>>>>>>[11, 22, 33, 44, 33]
(9)remove删除指定元素,从左边开始
li = [11, 22, 33, 44, 33, .55] li.remove(33)#remove删除指定元素,从左边开始 print(li)#》》》》》》》[11, 22, 44, 33, 0.55]
(10)reverse反转列表
li = [11, 22, 33, 44, 33,55] li.reverse()#reverse反转列表 print(li)#>>>>>>>>>>[55, 33, 44, 33, 22, 11]
(11)sort将列表排序,默认从小往大排,在参数位置加入reverse=True,列表将从大往小排
注意,列表中各元素为同一类型时候才可以排序
li = [11, 22, 33, 44, 33,55] li.sort()#sort将列表排序,默认从小往大排,在参数位置加入reverse=True,列表将从大往小排 print(li)#>>>>>>>>[11, 22, 33, 33, 44, 55]
(4)元组》》》》》tuple
#########元组由()组成,各元素由“,”隔开,元素可以是数字,字符串,列表等
#########元组一经创建,一级元素不可修改,增加,删除
#########元组有序,可以迭代
#########元组也可通过索引查找其元素位置,,可切片
tu=(11,22,33,44,["aa",(11,"bb")],123,23) tu[2]=12 print(tu) tu[4][0]=11 print(tu)#>>>>>>>>>(11, 22, 33, 44, [11, (11, 'bb')], 123, 23) tu[4][1]="abc"#元组中一级元素不可被修改、删除、添加 print(tu)#>>>>>>>(11, 22, 33, 44, ['aa', 'abc'], 123, 23) tu[4][1][0]=123 print(tu)#元组中一级元素不可被修改、删除、添加
元组内置方法:
(1)count统计元组中指定元素的个数
tu=(11,22,33,44,["aa",(11,"bb")],22,123,23) v=tu.count(22)#count统计元组中指定元素的个数 print(v)#>>>>>>>2
(2)index寻找指定元素的下标,参数表示起始位置与结束位置
tu=(11,22,33,44,["aa",(11,"bb")],22,123,23) v=tu.index(22,0,-1)#index寻找指定元素的下标,参数表示起始位置与结束位置 print(v)#>>>>>>>>1
(5)字典》》》》》》dict
#########字典是无序的,支持增删改查,key:value一一对应,value可以是任意值,不能用列表,字典做key
#########字典可以迭代
字典内置方法:
(1)clear清空字典
dic={ 3:"123", 10:"aaa", 6:{ 123:[], 222:(), "abcd":{ "a":123 } } } dic.clear()#clear清空字典 print(dic)#>>>>{}
(2)copy浅拷贝字典
dic={ 3:"123", 10:"aaa", 6:{ 123:[], 222:(), "abcd":{ "a":123 } } } v=dic.copy()#copy浅拷贝字典 print(v)#>>>>{10: 'aaa', 3: '123', 6: {123: [], 222: (), 'abcd': {'a': 123}}}
(3)dict.fromkeys根据序列,创建指定的字典
v=dict.fromkeys([1111,22222])#dict.fromkeys根据序列,创建指定的字典 print(v)#>>>>{22222: None, 1111: None}
(4)get根据key找到对应的value
dic={ 3:"123", 10:"aaa", 6:{ 123:[], 222:(), "abcd":{ "a":123 } } } v=dic.get(3)#get根据key找到对应的value print(v)#>>>>123
(5)keys通过for循环输出所有的key,根据Key获取值,key不存在时,可以指定默认值(None)
dic={ 3:"123", 10:"aaa", 6:{ 123:[], 222:(), "abcd":{ "a":123 } } } for i in dic.keys():#>>>>keys通过for循环输出所有的key print(i)#>>>>>10 3 6
(6)values通过for循环输出所有的values
dic={ 3:"123", 10:"aaa", 6:{ 123:[], 222:(), "abcd":{ "a":123 } } } for i in dic.values():#>>>>values通过for循环输出所有的values print(i)#>>>>>aaa 123 {123: [], 'abcd': {'a': 123}, 222: ()}
(7)items通过循环表示输出所有的key及其对应values
dic={ 3:"123", 10:"aaa", 6:{ 123:[], 222:(), "abcd":{ "a":123 } } } for i,v in dic.items():#>>>>items通过循环表示输出所有的key及其对应values print(i,v)#>>>>>10 aaa 3 123 6 {'abcd': {'a': 123}, 123: [], 222: ()}
(8)pop根据key删除指定的values,若字典中没有,则返回参数值
dic={ 3:"123", 10:"aaa", 6:{ 123:[], 222:(), "abcd":{ "a":123 } } } v=dic.pop(15,1111)#pop根据key删除指定的values,若字典中没有,则返回参数值 print(v)#>>>>>1111
(9)popitem随机删除字典中的一组值
dic={ 3:"123", 10:"aaa", 6:{ 123:[], 222:(), "abcd":{ "a":123 } } } v=dic.popitem()#popitem随机删除字典中的一组值 print(v)#>>>>>(10, 'aaa')
(10)设置值,已存在,不设置,获取当前key对应的值,不存在,设置,获取当前key对应的值
dic={ 3:"123", 10:"aaa", 6:{ 123:[], 222:(), "abcd":{ "a":123 } } } v=dic.setdefault(10,5555)#setdefault设置值,已存在,不设置,获取当前key对应的值,不存在,设置,获取当前key对应的值 print(v)#>>>>>aaa
(11)update,更新,若key已存在,则将values更换,若不存在,则将新组添加到字典中
dic={ 3:"123", 10:"aaa", 6:{ 123:[], 222:(), "abcd":{ "a":123 } } } dic.update({10:5555})#update,更新,若key已存在,则将values更换,若不存在,则将新组添加到字典中 print(dic)#>>>>>{10: 5555, 3: '123', 6: {123: [], 222: (), 'abcd': {'a': 123}}}
(6)集合》》》》set.
集合特点:是一个无序且不重复的元素集合,元素不可变
通过内置函数set可将对象转换为集合,会自动去重
1 s = {1,2,3,4,5,5,6,2,2,23} 2 s = set(s)#set将元素转换成集合,会自动去重 3 print(s)#{1, 2, 3, 4, 5, 6, 23}
集合内置函数
s = {1,2,3,4,5,5,6,2,2,23} s.add("abc")#添加元素到随机位置 print(s)#{1, 2, 3, 4, 5, 6, 23, 'abc'} s.clear()#清空集合 print(s)#set() s1 = s.copy()#拷贝集合 print(s1)#{1, 2, 3, 4, 5, 6, 'abc', 23} s.pop()#随机删除元素 print(s)#{1, 2, 3, 4, 5, 6, 23} s.remove(8)#指定元素删除,若不存在,会报错 print(s) s.discard(8)#指定元素删除,若不存在不会报错 print(s)
print(s.union(s2))#union求两个集合并集,用“|"表示,即两个集合相加去重 print(s.intersection(s2))#intersection求两个集合交集,用“&”表示,即求两个集合共有部分 print(s.difference(s2))#difference求两个集合差集,用“-”表示,即求s中有的元素而s2中没有 print(s.symmetric_difference(s2))#symmetric_difference求交叉补集,即减去两个集合共有的元素,剩下的即为交叉补集 s.difference_update(s2)#difference_update差集更新 print(s.isdisjoint(s2))#isdisjoint判断是否有交集,如果没有交集,返回True,否则返回False" print(s.issubset(s2))#issubset判断是否是子序列 print(s.issuperset(s2))#issuperset判断是否是父序列 s.symmetric_difference_update(s2)#对称差集,并更新到a中
数据转换
字符串(str)、列表(list)、元组(tuple)、字典(dict)可通过for循环或者join等方法相互转换
(1)字符串与列表的转换
# 字符串转换列表 li = list("asdfasdfasdf"), 内部使用for循环 s = "pouaskdfauspdfiajsdkfj" new_li = list(s) print(new_li)#>>>>>>>>>>['p', 'o', 'u', 'a', 's', 'k', 'd', 'f', 'a', 'u', 's', 'p', 'd', 'f', 'i', 'a', 'j', 's', 'd', 'k', 'f', 'j']
列表转换成字符串
# 列表转换成字符串, # 既有数字又有字符串,需要自己写for循环一个一个处理 li = [11,22,33,"123","alex"] r = str(li)#如果列表中含数字元素,不能直接转换,会报错,因为数字不可迭代 print(r)#》》》》》》》报错
############################################# li = [11,22,33,"123","alex"] s = "" for i in li:#通过for循环,先将列表中一个个元素单个转换成字符串,再进行字符串的叠加 s = s + str(i) print(s)#112233123alex
#################################################
# 列表中的元素只有字符串,直接使用字符串join方法
li = ["123","alex"]
v = "".join(li)
print(v)#》》》》》》》123alex
(2)字符串、元组、列表间的相互转换
字符串转换元组
字符串转换为元组 s = "asdfasdf0" v = tuple(s) print(v)#》》》》》》('a', 's', 'd', 'f', 'a', 's', 'd', 'f', '0')
列表转换元组
li = ["asdf","asdfasdf"] v = tuple(li) print(v)#》》》》》》('asdf', 'asdfasdf')
元组转换列表
tu = ("asdf","asdf") v = list(tu) print(v)#》》》》》》['asdf', 'asdf']
元组转换字符串
tu = ("asdf","asdf") v = "_".join(tu) print(v)#》》》》》》asdf_asdf