python基础(三)-数据类型与内置方法1
数据类型
(1)整型(INT)
‘’‘int只能转纯数字的字符串,小数点都不行’‘’
存一个值且有序:但凡有索引的数据都是有序的。
进制转换
10进制转二进制:print(bin(12)) 0b1100 0b表示后面的数字时二进制数
10进制转八进制:print(oct(12)) 0o14 0o表示后面的数字时八进制数
10进制转16进制:print(hex(12)) 0xc 0x表示后面的数字是16进制
print(int(‘1100’,2)) ’‘’转二进制‘’‘
print(int(‘14’,8)) ’‘’转8进制’‘’
print(int(‘c’,16)) ‘’‘转16进制’‘’
可变类型与不可变类型
- 可变类型:只改变的情况下,id不变,说明你改的是原值。
- 不可变类型:值改变的情况下,id一定改变。
x = 10 print(id(x)) x = 11 print(id(x))
(2)浮点型
作用例子:薪资 身高 体重
salary = 1.1 float(1.1) res = float(‘1.11’) print(type(res)) ‘’‘float’‘’
(3)字符串型
存一个值;不可变型;
1、用途:描述性 2、定义方式:'',"",""""""
s = 'hello baby' # str('hello baby') s1 = str([1,2,3,4]) print(type(s1)) s2 = str({'name':'jason','password':123}) print(type(s2))
- 1.按索引取值(正向取+反向取):只能取
s = ‘hello big baby’ print(s[0]) ‘’‘h’‘’
- 2.切片操作(顾头不顾尾,步长):从一个大的字符串中截取一段新的小字符串,左边是头,右边是尾,并且不是按数字来分头尾的
s = ‘hello big baby’ print(s[0:5]) ‘’‘hello’‘’ print(s[0:10:1]) ‘’‘hello big 步长默认是1’‘’ print(s[0:10:2]) ‘’‘步长表示隔几个取一个‘’‘
- 3.了解复数取值
s = ‘hello big baby’ print(s[-1]) ‘’‘无’‘’ print(s[0:5:-2]) ‘’‘-2是步长,’无‘ 切片取值默认是从左往右的’‘’ print(s[5:0:-1]) ‘’‘-1是步长, ’ olle‘ 此切片取值为从右往左’‘’ print(s[-1:-10:-1]) ‘’‘ybab gib ’‘’
- 4.长度len:统计的是字符串中字符的个数
s1 = ‘ ’ print(len(s1))
''' 1 '''
- 5.成员运算in和not in:判断一个子字符串是否存在于一个大的字符串中
print(‘zkj’ in ‘zkj is wd and zkj is godman’) print(‘k’ in ‘zkj is wd and zkj is godman') print(‘jason’ not in ‘zkj is wd and zkj is godman’)
- 6.去掉字符串首尾的空格,不管中间的,用 .strip()
username = input('>>>:').strip() if username == 'jason': print('good job') ‘’‘strip()默认去除字符串首尾的空格 rstrip()去除右边的空格;lstrip()去除左边空格 使用内置的方法统一采用 句点符 ( . ) ’’‘ name1 = ‘jason’ name2 = ‘ jason ’.strip() print(name1 == name2) ’‘’ ‘jason’ == ‘ jason ‘ ’‘’ name3 = ‘$$$$egon$$$$’ print(name3.strip(‘$’)) ‘’‘ ’egon’ ‘’‘ name4 = ‘% $&jason@*)’ print(name4.strip(‘% $&@*)’)) ’‘’ ‘jason’ ‘’‘
- 7.切分split:针对按照某种分隔符组织的字符串,可以用split将其切分成成列表,进而进行取值
data = ‘jason|123|handsome’ print(data.split(‘ | ’)) username,password,info = data.split(‘ | ’) print(username,password,info) '''[ ’jason‘,‘123’,‘handsome’ ]'''
‘’‘强调:split切分出来的数据类型是一个列表’‘’
data = ‘jason|123|handsome’ print(data.split( j )) '''split切割的顺序其实是从左往右的''' print(data.split(‘o’,1)) ''' [‘jas’,‘n|123|hands’,‘me’] ''' print(data.rsplit(‘o’,1)) '''这次是从右往左,依照’0‘切割,不过只切割第一个‘o’ ''' print(data.split('o',2)) '''这次是从左往右,依照’0‘切割,不过要切割从左往右数第一个‘o’和 第二个‘o’ '''
'''如果不指定,那么split和rsplit效果是一样的'''
- 8.循环
data = ‘jason |123|handsome’ for i in data: print(i) '''空格也会被打印出来'''
‘’‘需要我们掌握的‘’’
1).strip、lstrip、rstrip
同上
2).lower、upper
s = ‘JaS1oN’ res = s.lower() print(res) print(s) print(s.upper()) print(s) '''jas1on,JaS1oN,JAS1ON,JaS1oN'''
‘’‘调用字符串的方法并没有改变字符串本身‘’’
3).startswith,endswith
s1 = ‘egon is dsb’ print(s1.stratswith(‘ j ’)) '''False''' print(s1.stratswith(‘e’)) '''True''' '''判断字符串是否以XXX开头''' print(s1.endswith(‘n’)) '''True''' '''判断字符串是否以XXX结尾'''
4.format的三种玩法(python推荐使用format格式化输出)
’‘’第一种 按位置占位‘’‘
str1 = ‘my name is { } my age is { }’ .format(‘jason’,18) str1 = ‘my name is { } my age is { }’ .format(18,‘jason’) print(str1) '''my name is jason my age is 18 my name is 18 my age is jason '''
‘’‘第二种 按索引占位’‘’
str1 = ‘my {1} name is {0} my {0} age is {0}’ .format(‘egon’,18) print(str1) '''my 18 name is egon my egon age is egon'''
‘’‘第三种 指名道姓占位(关键字传参)’‘’
str1 = ’my {name} name is {age} my {name} age is {name}‘ .format(name=‘jason’,age=18) print(str1) '''my jason name is 18 my jason age is jason'''
5.split、lsplit、rsplit
上面已经说过了。
6.join(将容器内的多个元素通过指定的字符拼接成一个字符串)
data = ‘jason|123|handsome’ res_list = data.split(‘ | ’) print(res_list) res_str = ‘$’.join(res_list) print(res_str) '''[’jason’,‘123’,‘handsome’] jason$123$handsome '''
7.replace
str = ‘egon is dsb and egon is sb he has a BENZ’ res1 = str.replace(‘egon’,‘kevin’,1) res2 = str.replace(‘egon’,‘kevin’,2) print(res1) print(res2) print(str) '''kevin is dsb and egon is sb he has a BENZ kevin is dsb and kevin is sb he has a BENZ egon is dsb and egon is sb he has a BENZ '''
8.isdigit(判断字符串中包含的是否为纯数字)
while True: age = input('>>>:') if age.isdigit(): age = int(age) if age > 28: print('阿姨好') else: print('你他妈的能不能好好输') break
‘’‘需要了解的内置方法’‘’
1.find,rfind,index,rindex,count
s = ‘kevin is dsb and kevin is sb’ print(s.find(‘dsb’)) '''返回的是d字符所在的索引值''' print(s.find(‘XXX’)) '''找不到的时候不报错且返回的是-1''' print(s.find(‘i’,0,3)) '''还可以通过索引来限制查找范围''' s = ‘kevin is dsb 0 and kevin is sb’ print(s.index(‘o’)) '''返回所传字符所在的索引值 13''' print(s.index(‘and’)) '''返回所传字符所在的索引值 15''' print(s.index(‘i’,0,3)) '''顾头不顾尾,在0,1,2中寻找不到则直接报错'''
s = ‘kevin is dsb 0 and kevin is sb’
print(s.count(‘n’)) ‘’‘统计字符出现的次数‘’’
2.center,ljust,rjust,zfill
s9 = ‘jason’ print(s9.center(11,‘$’)) '''$$$jason$$$''' print(s9.ljust(11,‘$’)) '''jason$$$$$$$$$$$''' print(s9.rjust(11,‘$’)) '''$$$$$$$$$$$jason''' print(s9.rjust(11,‘ ’)) ''' jason''' print(s9.zfill(40)) '''00000000.......00000000000jason'''
3.expandtabs
s10 = ‘a\tbc’ print(s10.expandtabs(100)) '''a bc,空格被拓展了 \r\n或者\n、\r 回车换行 '''
4.captalize,swapcase,title
s12 = ‘hElLo WoRLD sH10’ print(s12.capitalize()) '''Hello world sh10首字母大写''' print(s12.swapcase()) '''每个单词字母大小写互换''' print(s12.title()) '''每个单词的首字母大小写互换'''
5.is数字系列
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())
(4)列表类型
‘’‘list内部原理就是for循环取值,然后一个个塞到列表中去’‘’
优先掌握的操作
1.按索引存取值(正向存取+反向存取:即可存也可取)
l = [1,2,3,4] ‘’’print(l[0:4:1]) print(l[0 : :]) print(l[5: :-1]) ‘’‘’ print(id(l)) l[0] = 69 print(id(l)) print(l)
2.切片(顾头不顾尾,步长)
l = [11,22,33,44,55] l1 = [99,88,77,66] '''尾部添加一个66''' l.append(66) '''注意append值能将被添加的数据当作列表的一个元素''' print(l) '''l = [11,22,33,44,55,66]''' '''任意位置添加元素''' l.insert(2,96) '''通过索引在任意位置添加元素''' print(l) '''注意insert值能将被添加的数据当作列表的一个元素''' '''添加容器类型数据''' '''l.append(l1) l.insert(-1,l1) l.extend(l1) ‘’内部原理for循环l1一个个追加到尾部 ''' l = [11,22,33,44,55] l.extend([1,]) print(l) '''[11, 22, 33, 44, 55, 1]'''
3.长度
print(len(l))
4.成员运算in和not in
print(444 in l) '''True或者False'''
5.往列表中添加元素(很重要)
append
insert
extend '''只能添加列表'''
6.删除
print(l) del l[2] '''del适用于所有数据类型的删除操作''' print(l) res1 = l.pop() '''尾部弹出''' res2 = l.pop() res3 = l.pop() print(res1,res2,res3) res1 = l.pop(0) '''可以指定索引,按照索引弹出元素''' print(res1) res = l.remove(33) '''指定要删除的元素的值''' print(l) print(res) s = ‘haha’ print(s) del s print(s)
7.循环
for i in l: print(i)