整型
1.用途:QQ号,手机号,身份证号(不带X的)...
2.定义方式:内部原理就相当于age = 18 # age = int(18)
int只能转换纯数字的字符串,带其他任何字符串都不行,包括小数点
进制转换
1.二进制转十进制:10
1*(2**1) + 0*(2**0)
print(int('10',2))
2.八进制转十进制:110
1*(8**2) + 1*(8**1) + 0*(8**0)
print(int('10',2))
3.十六进制转十进制:110
1*(16**2) + 1*(16**1) + 0*(16**0)
print(int('110',16))10进制转其他进制
十进制转换其他进制
十进制转换二进制
print(bin(12)) # 0b1100 0b表示后面的数字是二进制数
十进制转换八进制
print(oct(12)) # 0o14 0o表示后面的数字是八进制数
十进制转换十六进制
print(hex(12)) # 0xc 0x表示后面的数字是十六进制数
可变与不可变类型
可变类型:数据值改变的情况下,id不变
不可变类型:数据值改变的情况下,id也变了
所以整型是不可变类型
有序和无序的概念
能用索引取值的数据都是有序的,否则无序。
所以整型是无序的
浮点型
1.作用:薪资,身高,体重
2.定义:内部原理就是 salary = 1.1 # salar = float(1.1)
字符串类型
1.作用:描述性的数据
2.定义:内部原理就是s = 'hello baby' # s = str('hello baby')
1.按索引取值(只能取值)
正向取
s = 'hello world' print(s[0])
反向取
s = 'hello world' print(s[-1])
2.切片
顾头不顾尾,步长,从一个大的字符串中截取一段新的小字符串,左边的固定就是头,右边固定就是尾
s = 'hello big baby~' print(s[0:5]) # hello print(s[0:10:1]) # hello big 步长不写默认是1 print(s[0:10:2]) # hlobg 步长表示隔几个取一个
负数取值
s = 'hello big baby~' print(s[-1]) print(s[5:0:-1]) print(s[-1:-10:-2])
3.长度
len():统计的是字符串中字符的个数(比较特殊)
s = 'abcde' print(len(s))
4.成员运算
in和not in: 判断一个子字符串是否存在于一个大的字符串中
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
print('egon' in 'egon is dsb and egon is sb') print('g' in 'egon is dsb and egon is sb') print('jason' not in 'egon is dsb and egon is sb')
5.删除字符串左右两边的字符
strip():默认删除左右两边的空格,括号中加字符,删除对应字符
name = ' francis ' print(name.strip()) name1 = '1francis' print(name1.strip('1'))
lstrip():只删除字符左边的
name = ' francis ' print(name.lstrip())
rstrip():只删除字符右边的
name = ' francis ' print(name.rstrip())
6.切分
split():针对按照某种分隔符组织的字符串,可以用split将其切分成列表,进而进行取值
data = 'jaso n|123| handsome' print(data.split('|'))
rsplit():从右向左分割
data = 'jaso n|123| handsome' print(data.rsplit('|',1)) # 1代表最大分割的数量
附加:join():将容器类型的数据中的多个元素通过指定字符拼接成一个字符串
data = ['1','2','3','a','b'] data1 = '|'.join(data) print(data1)
7.循环
data = 'jaso n|123| handsome' for i in data: print(i)
8.upper和lower
字符全大写
name = 'FranCis' print(name.upper())
字符全小写
name = 'FranCis' print(name.lower())
9.判断字符什么以开头和结尾
name = 'Francis' print(name.startswith('F')) # 判断字符串是否以什么什么开头 print(name.endswith('s')) # 判断字符串是否以什么什么结尾
10.format的三种用法
1.第一种(按位置占位,跟%s原理一致)
str1 = 'my name is {} my age is {}'.format('francis',23) str2 = 'my name is {} my age is {}'.format(23,'francis',) print(str1) print(str2)
2.第二种(按索引占位)
str1 = 'my name is {0} my age is {1},{1},{0}'.format('francis',23) print(str1)
3.第三种(指名道姓占位,类似于用字典的key占位)
str1 = 'my name is {name} my age is {age},{age},{name}'.format(name='francis',age=23) print(str1)
11.replace
替换字符串中的某个值
str = 'francis age is 23,francis has a car ' res = str.replace('francis','XXX') res1 = str.replace('francis','XXX',1) # 1表示替换几次,默认全替换 print(str) print(res) print(res1)
12.isdigit
判断字符串中包含的是否全部是数字
age = '18' age1 = 'aaa' print(age.isdigit()) print(age1.isdigit())
13.find,rfind,index,rindex,count
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
s = 'kevin is dsb o and kevin is sb' print(s.find('dsb')) # 返回的是d字符所在的索引值 print(s.find('xxx')) # 找不到的时候不报错返回的是-1 print(s.find('i',0,4)) # 还可以通过索引来限制查找范围 print(s.index('o')) # 返回所传字符所在的索引值 print(s.index('i',0,3)) # 返回所传字符所在的索引值,找不到会报错 print(s.count('n')) # 统计字符出现的次数
14.center,ljust,rjust,zfill
s = 'francis' print(s.center(13,'*')) # 类似于居中对齐 print(s.ljust(40,' ')) # 类似于左对齐 print(s.rjust(40,' ')) # 类似于右对齐 print(s.zfill(40))
15.expandtabs
扩展的制表符
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
s10 = 'a bc' print(s10.expandtabs(100))
16.captalize,swapcase,title
s12 = 'hElLo WoRLD sH 20' print(s12.capitalize()) # Hello world 首字母大写,不影响数字 print(s12.swapcase()) # 大小写互换 print(s12.title()) # 每个单词的首字母大写
17.is数字系列
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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())
由以上可知字符串是有序的(但凡有索引的数据都是有序的),而且是不可变类型。
列表类型
作用:多个数据,多个账号,多个手机号,多个姓名
定义:[]内可以有多个任意类型的值,逗号分隔,内部原理就是 l =[1,3,5,7] # l = list([1,3,5,7])
1.按索引取值(可存可取),切片
正向取值
l = [1,2,3,4] print(l[0:4:1]) # 0:4代表范围 1代表步长 print(l[0::])
反向取值
l = [1,2,3,4] print(l[5::-1])
存值
l = [1,2,3,4] l[0] = 69 print(l)
2.append,insert,extend
在列表中添加数据
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
l = [11,22,33,44,55] l1 = [99,88,77,66] # 1.尾部添加一个66 l.append(66) # 注意append值能将被添加的数据当作列表的一个元素 print(l) # 2.任意位置添加元素 l.insert(2,96) # 通过索引在任意位置添加元素 print(l) # 注意insert值能将被添加的数据当作列表的一个元素 # 3.添加容器类型数据 l.extend(l1) # 内部原理for循环l1一个个追加到列表的尾部 print(l)
3.len
列表长度,数据个数。
4.in和not in
判断数据是否属于列表
5.删除
del
l = [11,22,33,44,55] print(l) del l[2] # del适用于所有的删除操作,用索引删除 print(l)
remove
l = [11,22,33,44,55] print(l) l.remove(33) # 指定要删除的元素的值 print(l)
6.数据弹出
尾部弹出
l = [11,22,33,44,55] res1 = l.pop() # 尾部弹出 res2 = l.pop() res3 = l.pop() print(res1,res2,res3)
指定位置的数据弹出
l = [11,22,33,44,55] res1 = l.pop(1) # 可以指定索引 按照索引弹出元素 print(res1)
7.循环
l = [11,22,33,44,55] for i in l: print(i)