整型
其他进制转十进制
#通用形式
print(int('要转化的数字',数字的进制)) print(int('1100',2)) # int可以转第一个参数,后面的数表示的是第一个参数到底是什么进制 然后将其转成十进制 print(int('14',8)) print(int('c',16))
#手动转换
# 二进制转十进制 0,1
# 10 # 1*(2**1) + 0*(2**0) 2
# 八进制转十进制 0-7
# 235 # 2*(8**2) + 3*(8**1) + 5*(8**0)
# 十六进制转十进制 0-9 A-F
# 217 # 2*(16**2) + 1*(16**1) + 7*(16**0)
十进制转其他进制
# 10进制转二进制 # print(bin(12)) # 0b1100 0b表示后面的数字是二进制数 # 10进制转八进制 # print(oct(12)) # 0o14 0o表示后面的数字是八进制数 # 10进制转16进制 # print(hex(12)) # 0xc 0x表示后面的数字是十六进制数
可变类型与不可变类型
¥ 可变类型:值改变的情况下,id不变,说明你改的是原值 ¥ 不可变类型:值改变的情况下,id一定变 #可以理解成固定id不变情况下,值可以改变的为可变类型,值不能变化的为不可变类型
字符串
#字符串为不可变类型,方法不改变字符串的值,只能取不能存
字符串优先掌握的方法
1#索引取值(可正取,反取,只能取)
B = 'current leval' print(B[4]) #输出 r print(B[-4]) #输出 e 只能取不能改,但是列表里面可以改 A=[1,2,3] A[0]=5 print(A) #输出 [5,2,3]
2#切片取值(正向反向切 顾头不顾尾 步长) ¥print(A[a1:a2:b]) //A为字符串,a1、a2为索引,b为步长默认为1从左到右取值,若果从右往左取值则改为负数 //a1位置永远为头a2位置为尾,顾头不顾尾
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
A = '0123456789' print (A[0:5]) # 01234 0和5为索引,顾头不顾尾 print (A[0:9:1]) #012345678 1为步长,默认为1,可以不写 print (A[0:9:2]) #02468 2为步长,隔一个数取一个,默认从左向右 print (A[0:5:-2]) # 空的 起点为0,步长取负数表示往左取,什么也没有 print (A[5:0:1]) # 空的 起点为索引5的位置,步长为正数向右取值超出范围,无值 print (A[5:0:-1]) # 54321 起点为5,步长为负数,向左取值,不顾尾取不到0 print (A[-1:-9:-1]) #98765432 涉及索引取值,索引-1为最右边第一个数
3#长度 len()
统计字符串的字符个数(在容器类型中统计值的个数)
4#in 和 not in print("cu" in 'current leval') # True print("cu" not in 'current leval') # False
5#移除首尾 .strip() 多用于去除字符串首尾不想要的字符,默认去除空格,括号内加入什么字符就把什么字符从首尾去掉,支持多个字符同时去除 name = input ('please input name:').strip() #防止手抖多输入空格报错 #补充 .lstrip() 和 .rstrip()为左移除只去除左边的和右移除只去除右边的
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
user=' egon ' user=' x egon ' user="*******egon********" user=" **+* */***egon* **-*****" print(user.strip("* +/-")) # 输出的全都是一个白白净净的egon
#切分 .split('切除标识符',切除次数) ¥切分出来的数据自动生成一个列表,然后可以通过解压赋值一一取出 ¥默认从左往右切,默认全切除非指定切除次数 #补充 .rsplit(‘切除标识符’,切除次数) 从右往左切
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
print(A.split('/')) #['中国', '河南', '洛阳', '栾川'] print(A.split('南')) #['中国/河', '/洛阳/栾川'] print(A.split('/',2)) #['中国', '河南', '洛阳/栾川'] print(A.rsplit('/',2)) #['中国/河南', '洛阳', '栾川']
#支持循环 A = 'abcde 123' for i in A: print(i) #输出结果为a b c d e 空格 1 2 3
字符串需要掌握的方法
1.全部小写.lower() 全部大写.upper()
#方法不改变原本字符串的值 msg='aABBBBb' res=msg.lower() print(res) #aabbbbb print(msg) #aABBBBb 方法不改变值
2. 开头.startswith()和结尾.endswith()
#判断是否以...开头或者结尾 msg='alex is dsb' print(msg.startswith('alex')) #Ture print(msg.endswith('sb')) #Ture print(msg.endswith('b')) #Ture
3.占位.format()的三种玩法(python推荐使用format做格式化输出)
# 第一种 按位置占位 跟%s原理一致 str1 = 'my name is {} my age is {}'.format('jason',18) str1 = 'my name is {} my age is {}'.format(18,'jason',) print(str1) # 第二种 按索引占位 str1 = 'my {1} name is {0} my {0} age is {0}'.format('egon',18) print(str1) # 第三种 指名道姓占位(关键字传参) str1 = 'my {name} name is {age} my {name} age is {name}'.format(name='jason',age=18) print(str1)
4.拼接容器.join()
# 将容器类型中的多个元素通过指定字符拼接成一个字符串(与切分.split相反)
#字符串名称='拼接符'.join(容器名称)
ata = 'jason|123|handsome' res_list = data.split('|') print(res_list) # ['jason', '123', 'handsome'] res_str = '$'.join(res_list) print(res_str) #jason$123$handsome
5.替换replace
#将字符串中的部分字符替换掉
# 字符串名称=被替换名称.replace('被替换字符','替换字符',替换个数)
str = 'egon is dsb and egon is sb he has a BENZ' res = str.replace('egon','kevin',1)
print(str) #egon is dsb and egon is sb he has a BENZ
print(res) #kevin is dsb and egon is sb he has a BENZ
6.判断是否为纯数字.isdigit()
#字符串名称.isdigit() 支持二进制和十进制, 够用了 ,其他两种了解即可 while True: age = input('>>>:') if age.isdigit(): age = int(age) if age > 28: print('阿姨好') else: print('你他妈的能不能好好输')
需要了解的内置方法
1、find,rfind,index,rindex,count
s = 'kevin is dsb o and kevin is sb' print(s.find('dsb')) # 9 返回的是d字符所在的索引值 print(s.find('xxx')) #-1 找不到的时候不报错返回的是-1 print(s.find('i',0,3)) #-1 还可以通过索引来限制查找范围,超出范围也不会报错 # print(s.index('o')) #13 返回所传字符所在的索引值 print(s.index('i',0,3)) #报错 返回所传字符所在的索引值,但是超出索引范围后直接报错,find只返回-1不报错 # print(s.count('n')) #3 统计字符出现的次数
2.字符填充center,ljust,rjust,zfill
s9 = 'jason' print(s9.center(12,'*')) #字符串长度12,将s9居中两边均匀填充* # print(s9.ljust(40,'$')) #字符串长度40,将s9居左,右边全部填充$ print(s9.rjust(40,'$')) print(s9.rjust(40,' ')) # print(s9.zfill(40)) #字符串长度40,将s9居右前边全部填充0 z为zer
3.扩充制表符
s10 = 'a\tbc' #\t为制表符 print(s10.expandtabs(100)) #填充一百个制表符
4.局部大小写captalize,swapcase,title
s12 = 'hElLo WoRLD sH10' print(s12.capitalize()) # Hello world 首字母大写 print(s12.swapcase()) # 大小写互换位置 print(s12.title()) # 每个单词的首字母大小
5.is数字系列
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
4' #bytes 二进制 num2=u'4' #就是阿拉伯数字 unicode,python3中无需加u就是unicode num3='壹' #中文数字 num4='Ⅳ' #罗马数字 # ''.isnumeric(): unicode,中文数字,罗马数字 只要是表示数字都识别,不识别二进制 print(num2.isnumeric()) print(num3.isnumeric()) print(num4.isnumeric()) # ''.isdecimal(): unicode 只识别普通的阿拉伯数字 print(num2.isdecimal()) print(num3.isdecimal()) print(num4.isdecimal()) # ''.isdigit() :bytes,unicode 能识别阿拉伯和二进制通常情况下使用isdigit就已经满足需求了,推荐使用 print(num1.isdigit()) print(num2.isdigit()) print(num3.isdigit()) print(num4.isdigit())
列表
#列表为可变类型
A = [1,2]
A[0] = 69
print(A) #[69, 2] 列表为可变类型,可赋值
# list内部原理就是for循环取值 然后一个个塞到列表中去,括号内必须放容器类型
#A = [a,x,c] 实质为 A = list([a,x,c])
A=list('abcd') print(A) #['a', 'b', 'c', 'd'] l1=list({'name':'jason','password':'123'}) print(l1) #['name', 'password']
1、按索引存取值(正向存取+反向存取):即可存也可以取
l = [1,2,3,4] print(l[0]) #1
2.切片(顾头不顾尾,步长)
l = [1,2,3,4] print(l[0:4:1]) #[1, 2, 3, 4] 04为索引,1为步长 print(l[0::]) #[1, 2, 3, 4] 索引不写默认0,步长默认1 print(l[5::-1]) #[4, 3, 2, 1] 可以反向取值
3.长度
l=['egon','lxx','yxx',444,555,66666,[1,2,3]] print(len(l)) #7
4.成员运算in和not in
l=['egon','lxx','yxx',444,555,66666,[1,2,3]] print('lxx' in l) #True print(444 in l) #True
5.往列表中添加元素******
尾部追加'单个'元素******append
l=['egon','lxx','yxx'] l.append(44444) l.append(55555) print(l) #'egon', 'lxx', 'yxx', 44444, 55555]
往指定索引前添加'单个'元素******insert
l=['egon','lxx','yxx'] l.insert(0,11111) print(l) #[11111, 'egon', 'lxx', 'yxx'] l.insert(2,2222222) print(l) #[11111, 'egon', 2222222, 'lxx', 'yxx']
一次性添加多个元素******extend
#将容器类型中多个元素依次取出,从尾部依次添加
l = ['jason','nick'] l.extend(['tank','sean']) #内部原理for循环+append 一个个追加到列表中 print(l) #['jason', 'nick', 'tank', 'sean']
6.删除 del remove pop
l=['egon','lxx','yxx'] # 方式1: del l[1] # 通用的,适用所有数据类型删除 print(l) #['egon', 'yxx'] # 方式2: res=l.remove('lxx') # 指定要删除的值,返回是None print(l,res) #None # 从列表中弹出一个值 ****** res=l.pop(-1) # 按照索引弹出值(默认是从末尾弹出),返回弹出的那个值 print(l,res) # ['egon', 'lxx'] yxx l=['egon','lxx','yxx'] l.pop() l.pop() print(l) #['egon']
7.循环
l=['egon','lxx','yxx'] for item in l: print(item) #gon lxx yxx
8.reverse() # 将列表反转
l= [1,2,3,4] print(id(l)) #31946184 l.reverse() # 将列表反转 print(id(l)) #31946184 print(l) #[4, 3, 2, 1]
9.clear() #清除
l= [1,2,3,4] print(id(l)) #32011720 res = l.clear() print(l) # [] print(res) #None print(id(l)) #32011720
10.sort() 排序 默认情况下是从小到大(升序)
l1 = [43,6,1,7,99] l1.sort() # [1, 6, 7, 43, 99] print(l1) l1.sort(reverse=True) #[99, 43, 7, 6, 1] 可以通过指定参数来修改默认的拍讯规则(降序) print(l1)
11.# 队列 先进先出
# l1 = [] # 先进 # l1.append('first') # l1.append('second') # l1.append('third') # # 先出 # print(l1.pop(0)) #0为索引,不写索引默认索引为-1从后往前弹出 # print(l1.pop(0)) # print(l1.pop(0))
12.堆栈 先进后出
# l1 = []
# 先进 l1.append('first') l1.append('second') l1.append('third') # 后出 print(l1.pop()) print(l1.pop()) print(l1.pop())