2019-07-03-数字类型、字符串、列表及其内置方法
本节知识点总结:
1.整型 int:进制转换
2.字符串 str :
常用操作:1.按索引取值
2.切片
3.长度len
4.成员运算 in/not in
5.去掉字符串两边的字符strip,不管中间的
6.切分split
7.循环 for
需要掌握操作:lower/upper
startswith/endswith
format
join
replace
isdigit
3.列表 list
常用操作:1.索引取值
2.切片
3.添加元素:append/insert/extend
4.删除:del/pop/remove
一、整型(int)
1、用途:存qq号,手机号,不带字母的身份证等等
2、定义方式:
age = 18 #age = int(18)
# int('1.1') #int只能转纯数字的字符串,像这个有小数点也不行
#进制转换
#其他进制转换十进制
#二进制转换十进制 0,1
10 # 1*(2**1)+0*(2**0)=2 所以这个转换变成2
#八进制转换十进制
235 # 2*(8**2)+3*(8**1)+5*(8**0)
#十六进制转换十进制
217 # 2*(16**2)+1*(16**1)+7*(16**0)
也可以使用 int进行转换
print(int('1100',2)) # '1100' 二进制转换成十进制
print(int('14',8)) # '14' 八进制转换成十进制
print(int('c',16)) # c 十六进制转换成十进制
这里int可以传第二个参数,表示的是第一个参数想要从什么进制转换成十进制
#十进制转换成其他进制
#十进制转二进制
print(bin(12)) #0b1100 0b表示后面的数字是二进制数
#十进制转八进制
print(oct(12)) #0o14 0o表示后面的数字是八进制数
#十进制转十六进制
print(hex(12)) #0xc 0x表示后面的数字是十六进制数字
总结:1.存一个值
2.无序(因为不可以用索引取值)
3.不可变类型数据
区别可变类型和不可变类型:
可变类型:在值改变的情况下,id不变,说明你的值是原值 不可hash
不可变类型:在值改变的情况下,id也改变 可hash
二、浮点型 float
1.作用:表示薪资,体重可以使用
2.定义: salary = 1.1 #salary = float(1.1)
三、字符串 str
1.作用:描述性信息,名字,自我介绍等文字
2.定义: name = 'old boy'
3.常用操作+内置方法
需要学习的
1.按索引取值(正向取+反向取) 只能取
s = 'oldboy areok'
print(s[3]) 索引值从0开始,3的值是b
2.切片(左闭右开,步长) #从一个大的字符串中截取一段小的字符串
正向
print(s[:]) #这样写一个冒号就是从头取到尾
print(s[0:5]) #oldbo
print(s[0:6:2]) #odo 默认步长是1,这里写2就是隔一个取一个
反向
print(s[-1]) #k -1就是指最后一个字符
print(s[0:5:-2]) #这里取不到值,因为从0开始-2方向没有值 切片默认方向是从左向右
print(s[5:0:-1]) #yobdl 遵循左闭右开,从索引5开始取值,索引0取不到,方向向左
print(s[-1:-10:-1]) #koera yob 空格也算字符
3.长度len:统计字符串中字符的个数
s = 'oldboy areok'
print(len(s)) #12 包括空格在内,从1开始
4.成员运算 in 和not in :判断一个子字符串是否存在于一个大的字符串中
返回值是True 或者False
print('old' in 'oldboy areok') #True
print('jason' in 'oldboy areok') #False
5.strip去掉字符串左右两边的空格,不管中间的
strip()默认去除字符串收尾的空格,也可以设置去掉其他字符
name = ' old boy ' print(name.strip()) #old boy #如果这个字符串首尾是$,在strip中写$ name1 = '$$$$old boy$$$$' print(name1.strip('$')) #old boy #去除首尾的这些字符 name1 = '#$%^old boy*&(' print(name1.strip('#$*&')) #%^old boy*&( #这个一定要写到开头和结尾的字符,才会去掉 name1 = '#$%^old boy*&(' print(name1.strip('#$%&(')) #^old boy*
还分为左去除和右去除
name2 = '$$$$jason$$$$' print(name2.lstrip('$')) #jason$$$$ print(name2.rstrip('$')) #$$$$jason
6.切分split:将一个字符串按照特殊的字符切割组成列表
split切割出来就是一个列表,默认是从左往右切割
data = 'joso n|1o3| handsome' print(data.split('o')) print(data.split('o',1)) print(data.rsplit('o',1)) # ['j', 's', ' n|1', '3| hands', 'me'] #根据o来切割整个字符串 # ['j', 'so n|1o3| handsome'] #从左往右切割一个 # ['joso n|1o3| hands', 'me'] #rsplit从右往左切割一个
7.循环 (把字符一个个循环取出来)
for i in data:
print(i)
需要掌握的:
1.strip,lstrip,rstrip(去除字符串前后两边的字符,中间的不管)
2.lower,upper (全部变成小写和全部变成大写)
#lower 全部变成小写 name = 'OlD boY' print(name.lower()) #old boy #upper 全部变成大写 print(name.upper()) #OLD BOY
3.startswith,endswith (判断字符串是否是以什么开头,结尾,返回True或者False)
name = 'OlD boY' print(name.startswith('O')) #True print(name.endswith('y')) #False
4.format的三种玩法 (format可以做格式化输出) '{}{}'.format('aa','bb')
第一种 按位置占位 跟%s原理一致
str = 'my name is {} my age is {}'.format('jason',18)
第二种 按索引占位 format里面参数的索引
str1 ='my {0} name is {1} my age {1} is {0}'.format('jason',18)
第三种 指名道姓占位 (关键字传参)
str2 = 'my {name} name is {age} my age {age} is {name}'.format(name = 'jason',age = 18)
5.split,rsplit 切割成一个列表
6.join #将容器类型中的多个元素(元素一定要是字符串)通过指定字符拼接成一个字符串 ' '.join()
拼接的元素必须是字符串类型 l = ['1','22','44'] print('|'.join(l)) #1|22|44 l2 = {'name':'bb','age':18} print('|'.join(l2)) #name|age
7.replace 替换 replace( old , new,要修改的个数) 第三个参数如果不填就是修改全部。如果你填写的是1,就从左往右数修改第一个
str = 'my name is ooo age is ooo' res = str.replace('ooo','xxx') #ooo全部替换成xxx res1 = str.replace('ooo','xxx',1) #只替换一个 print(res) #my name is xxx age is xxx print(res1) #my name is xxx age is ooo
8.isdight #判断字符串中包含是否为纯数字(如果全是数字返回的是True否则返回False)
s= '123ty' print(s.isdigit()) #False
总结:这里有三种字符串拼接的方法:
1.格式化输出 %s,%d
2.'{}{}'.format('aa','bb')
3.' '.join(a) #a= ['11','22','33'] a可以是元组、列表、字典等可以循环的,但是里面的元素要是字符串
需要了解的内置方法:
1.find,rfind,index,rindex,count
s = 'kevin is dsb o and kevin is sb' print(s.find('dsb')) # 返回的是d字符所在的索引值 print(s.find('xxx')) # 找不到的时候不报错返回的是-1 print(s.find('i',0,3)) # 还可以通过索引来限制查找范围 print(s.index('o')) # 返回所传字符所在的索引值 print(s.index('i',0,3)) # 返回所传字符所在的索引值,后面的数字表示在0~3索引之间查找 print(s.count('n')) # 统计字符出现的次数
find 如果没有查找到索引值就会返回-1,index如果没有找到索引值就会报错
2.center/ljust,rjust/zfill
s9 = 'jason' print(s9.center(12,'*')) #设置整个字符串长度为12,jason加在中间位置,其余用*填满 print(s9.ljust(40,'$')) #设置整个字符串长度为40,jason放在左边,其余用$填满 print(s9.rjust(40,'$')) #设置整个字符串长度为40,jason放在右边,其余用$填满 print(s9.rjust(40,' ')) #设置整个字符串长度为40,jason放在右边,其余用空格填满 print(s9.zfill(40)) #设置整个字符串长度为40,jason在右边,其余用0填满 结果: ***jason**** jason$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$jason jason 00000000000000000000000000000000000jason
3.expamdtabs
s10 = 'a\tbc'
print(s10.expandtabs(1)) #a bc
4.captalize,swapcase,title
s12 = 'hElLo WoRLD sH10' print(s12.capitalize()) # Hello world 首字母大写 print(s12.swapcase()) # 大小写互换 print(s12.title()) # 每个单词的首字母大写 结果: Hello world sh10 HeLlO wOrld Sh10 Hello World Sh10
5.is数字系列 (返回的是True或者False)
num1=b'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())
字符串总结:
1.存一个值
2.有序(因为可以用索引取值)
3.不可变类型
四、列表 list
1.作用:
记录存储多个值,可以方便取出来
2.定义:用[]表示,用逗号隔开多个任意类型的值 name = ['bb',1,{'name':'aa'}]
list内部原理就是for循环取值,然后一个个塞到列表中
3.常用操作+内置方法
1.按索引取值(这个和字符串的用法是一样的)
l = [1,2,3,4] print(l[0:4:1]) #从索引0到3取值,步长为1 print(l[0::]) #从索引0开始到最后 print(l[5::-1]) #反方向取值 步长也是1 结果: [1, 2, 3, 4] [1, 2, 3, 4] [4, 3, 2, 1]
2.切片(左闭右开,步长)
l =[22,44,55,88,99]
print(l[1:4]) #[44,55,88]
3.添加 append/insert/extend
append (append值能将被添加的数据当成列表的一个元素),默认添加在最后。
l =[22,44,55,88,99] l.append(666) print(l) #[22, 44, 55, 88, 99, 666] l.append([123,678]) print(l) #[22, 44, 55, 88, 99, 666, [123, 678]]
insert(通过索引在任意位置添加元素,insert也能将被添加的数据当成一个元素)
l =[22,44,55,88,99] l.insert(2,333) #把333添加到索引为2的位置 print(l) l.insert(4,[222,999]) #把列表[22,999]添加到索引为4的位置 print(l) 结果: [22, 44, 333, 55, 88, 99] [22, 44, 333, 55, [222, 999], 88, 99]
extend(添加容器类型数据,内部原理for循环列表一个个追加到列表的尾部)
l =[22,44,55,88,99] ll = [000,999,888] lll = {'name':'oo','age':17} l.extend(ll) #[22, 44, 55, 88, 99, 0, 999, 888] l.extend(lll) #[22, 44, 55, 88, 99, 'name', 'age'] print(l)
总结:列表有三个添加
1.append(在末尾添加)
2.insert(有两个参数,一个是要添加的索引位置,一个是要添加的数据)
3.extend(只能添加容器类型数据,就是可以for循环的)
4.长度 len(l)
5.成员运算in和not in(返回的结果是True或者是False)
6.删除:
也有三种:del/pop/remove
del 适用于所有的删除操作,根据索引值删除
l =[22,44,55,88,99] del l[2] print(l) #[22, 44, 88, 99]
pop 默认删除最后一个元素,会返回删除的值
l =[22,44,55,88,99] print(l.pop()) #99
print (l.pop(2)) #删除索引为2的元素
remove 删除指定列表中存在的值
l =[22,44,55,88,99] l.remove(55) print(l) #[22, 44, 88, 99] 删掉元素55
总结:列表删除也有三种:
1.del
2.pop
3.remove
7.循环
for i in l:
print(l) #把列表里面值一个个取出来