04.常用数据类型
一、数字类型
(一)、整型
(二)、浮点型
二:字符串
三、列表
四、元组
五、字典
六、集合
七、布尔类型(bool)
八、None类型
一、数字类型
(一)、整型
int:不可变类型,只能存储一个值
1、作用:用来记录年龄、等级、各种号码状态
2、定义:age=10 #age=int(10)
3、类型转换:只能转换纯整型组成的字符串或浮点型数字
int(3.14) ---> 3 int('111') ---> 111
4、十进制和其他进制的转换:
二进制:bin(13)--->0b1101
八进制:oct(13)--->0o15
十六进制:hex(13)--->0xd
5、常用内置方法(使用):
⑴、数学运算 3 + 1--->4
⑵、比较 4 > 3---True
(二)、浮点型
float:不可变类型,只能存储一个值
1、作用:用来记录身高、体重、工资状态
2、定义:salary=3.1 # salary=float(3.1)
3、类型转换:只能转换整型或由纯浮点型或纯整型组成的字符串
float(13)--->13.0, float('13')--->13.0,float('13.1')--->13.1
4、常用内置方法(使用):
⑴、数学运算 3.1+2--->5.1
⑵、比较 4.2 > 3--->True
整型和浮点型之间可以进行数学运算和比较运算
二、字符串
str:有序,不可变类型,只能存储一个值
1、作用:用来记录描述性质状态,比如名字、性别
2、定义:在单引号''、双引号""、三引号(多行)''' ''',""" """,包含一系列的字符
3、类型转换:str可以把任意类型转换为字符串类型str([1,2,3])--->'[1,2,3]'
4、字符串的运算
+用于连接字符串(仅限于字符串内'a'+'b--->'ab')
*用于多次连接字符串(只能与整型连用'a'*3--->'aaa')
5、常用内置方法(使用):mes = 'hello'
⑴、按索引取值(正向取+反向取) :mes[0])--->'h',mes[-2])---'l'
⑵、切片(顾头不顾尾,索引和步长可省略,省略时默认起始索引为0,结束索引为-1,步长为1)
mes[1:4]--->'ell', mes[1:6:2]--->'el'
⑶、统计字符个数:len() len(mes)--->5
⑷、成员运算in,not in:判断一个子字符串是否存在于一个大字符串中
⑸、移除首尾指定字符(参数省略时默认移除空白)
strip():移除字符串左右两边的某些字符
' hello '.strip()--->'hello', '**+hello**-**'.strip('*+')--->'hello**-'
lstrip():移除左边指定字符
rstrip():移除右边指定字符
⑹、切分split(): 把有规律的字符串从左往右切成列表(不指定数量时默认切分全部)
'lily:18:160:50'.split(':',2)--->['lily', '18', '160:50']
rsplit(): 把有规律的字符串从右往左切成列表
'lily:18:160:50'.rsplit(':',2)--->['lily:18', '160', '50']
⑺、连接join():把全部由字符串组成的列表或元组用指定的符号连接起来
';'.join(['lily', '18', '160'])--->lily;18;160
⑻、把字符串全部转换为小写:lower() 'Hello'.lower()--->'hello'
⑼、把字符串全部转换为大写:upper() 'Hello'.upper()--->'HELLO'
⑽、判断字符串是否以某个字符开头:startswith() 'hello'.startswith('h')--->True
⑾、判断字符串是否以某个字符结尾:endswith() 'hello'.endswith('plo')--->False
⑿、字符的替换:replace(old,new,count)count省略时默认为全部
'hahaha'.replace('a','i',2)--->'hihiha'
⒀、for循环:可用for循环取出字符串中的子字符串
⒁、检测子字符串开始的索引值
find() 如果指定范围内包含子字符串则返回开始的索引值,否则返回-1
'hello'.find('l',2,6)--->2, print('hello'.find('i'))--->-1
rfind() 从字符串右边开始查找,如果指定范围内包含子字符串则返回开始的索引值,否则返回-1
'hello'.rfind('l',3,5)--->3, 'hello'.rfind('p',3,4)--->-1
index() 如果指定范围内包含子字符串则返回开始的索引值,否则会报错
'hello'.index('l',3,4)--->3
rindex() 从字符串右边开始查找,如果指定范围内包含子字符串则返回开始的索引值,否则会报错
'hello'.rindex('l')--->3
⒂、captalize,swapcase,title
capitalize() 首字母大写
'my name is bony'.capitalize()--->My name is bony
title() 标题格式,每个单词首字母大写
'my name is bony'.title() --->My Name Is Bony
swapcase() 反转大小写
'abcDEF'.swapcase()--->ABCdef
⒃、center,ljust,rjust,zfill
center() 字符居中,指定填充字符.指定字符串长度
'lily'.center(20, '*')--->********lily********
ljust() 字符靠左,指定填充字符.指定字符串长度
'lily'.ljust(20,'*')--->lily****************
rjust() 字符靠右,填充字符为0.指定字符串长度
'lily'.rjust(20,'*')--->****************lily
zfill() 字符靠右,指定填充字符.指定字符串长度
'lily'.zfill(20)--->0000000000000000lily
⒄、is系列
str.isalnum() # 判断所有字符都是数字或者字母
str.isalpha() # 判断所有字符都是字母
str.isnumeric() # 判断所有字符都是数字
str.isdigit() # 判断所有字符都是数字
str.islower() # 判断所有字符都是小写
str.isupper() # 判断所有字符都是大写
str.istitle() # 判断所有单词都是首字母大写,像标题
str.isspace() # 判断所有字符都是空白字符、\t、\n、\r
6、字符串的格式化输出
⑴、%s:字符串, %d:数字
print('my name is %s, my age is %d' %('lily',18))
⑵、format的用法
①、msg='my name is {}, my age is {}'.format('lily',18)
按顺序,数量传值,顺序数量要对应上
②、msg='my name is {0}{0} my age is {1}{1}{1}'.format(18,'lily')
{}内的数字为format()内传入元素的索引位置
③、msg='my name is {name}, my age is {age},{name}'.format(age=18,name='lily')
可打乱顺序,数量可以是一个对应多个
④、name = 'lily'
age = 18
msg=f'my name is {name},my age is {age}'
引号前加关键字f(代表format)声明,无关顺序与数量
⑤、数字的格式化
7、与用户的交互
⑴、python3把用户输入的信息转为字符串类型
name=input("请输入您的账号:")
⑵、python2
①、在python2中有一个raw_input,与python3的input相同
x=raw_input('>>>: ')
②、要求用户必须输入一个明确的类型,输入什么类型就存成什么类型
x=input('>>>: ')
三、列表
list:有序,可变类型,可以存储多个值
1、作用:用来记录多个同一属性的值,用索引对应值,索引反映是值的位置
2、定义:在[]内用逗号分隔开多个任意类型的值
3、类型转换:list()可以把*指定类型*转换为列表类型list({'x':1,'y':2})--->['x', 'y']
4、常用内置方法(使用):l=['a','b','c','d']
⑴.按索引存取值(正向存取+反向存取):即可存也可以取
l[0] --->'a', l[-1] --->'d' l[1]= '123'--->l:['a', '123', 'c', 'd', ]
⑵.切片(顾头不顾尾,索引和步长可省略,省略时默认起始索引为0,结束索引为-1,步长为1)
l[:2]--->['a', 'b'], l[-1:-4:-2]--->['d', 'b']
⑶.统计列表元素个数:len() len(l)--->4
⑷.成员运算in,not in:判断一个元素是否存在列表中
⑸.增加列表元素
append():在列表末尾追加一个元素
l.append('56')--->l:['a', 'b', 'c', 'd', '56']
insert():在列表指定索引位置插入一个元素
l.insert(1,'56')--->l:['a', '56', 'b', 'c', 'd']
extend():一次追加多个元素
l.extend(['1','p'])--->l:['a', 'b', 'c', 'd', '1', 'p']
⑹.删除元素
remove():从列表中移除指定元素
l.remove('b')--->l:['a', 'c', 'd']
pop():从列表中弹出指定位置的元素(默认弹出最后一个) (弹出的元素可以被接受)
l.pop()--->l:['a', 'b', 'c'] l.pop(2)--->l:['a', 'b', 'd']
del:从列表中删除指定位置的元素 del l[0]--->l:['b', 'c', 'd']
删除整个列表del(l)
⑺.可以用for循环取值
⑻.count():统计同一元素出现的次数
l.count('a')--->1
⑼.index(): 如果指定范围内包含指定元素则返回开始的索引值,否则会报错
l.index('c',2,5)--->2
⑽.reverse():反转列表
l.reverse()--->['d','c','b','a']
⑾.sort():对列表内可比较的元素进行排序(默认升序)l=[10,-1,3,11,9]
l.sort():--->l:[-1,3,9,10,11],
l.sort(key = lambda a:a[2],reverse=True):以l中每个元素的索引为2的字符为排序标准,
进行降序(reverse=True))排列
5、扩展:l=[]
⑴、队列:先进先出
①、入队
l.append('first')
l.append('second')
l.append('third')
②、出队
l.pop(0)
l.pop(0)
l.pop(0)
⑵、堆栈:后进先出
①、入栈
l.append('first')
l.append('second')
l.append('third')
②、出栈
l.pop()
l.pop()
l.pop()
四、元组
tuple:有序,不可变类型,可以存储多个值(元组就是一个不可变的列表)
1、作用:用来记录多个同一属性的不变的值,用索引对应值,索引反映是值的位置
2、定义:在()内用逗号分隔开多个任意类型的元素当元组内只有一个值的时候后面要加逗号标识
3、类型转换:tuple()可以把指定类型转换为元组类型
tuple('hello')--->('h','e','l','l','o')
4、常用内置方法(使用):t=('a','b','c','d')
⑴、按索引存取值(正向取+反向取):只能取
t[2] --->'c', t[-1] --->'d'
⑵、切片(顾头不顾尾,索引和步长可省略,省略时默认起始索引为0,结束索引为-1,步长为1)
t[:2]--->('a', 'b'), t[-1:-4:-2]--->('d', 'b')
⑶、统计元组元素个数:len() len(t)--->4
⑷、成员运算in,not in:判断一个元素是否存在元组中
⑸、可以用for循环取值
⑹、count():统计同一元素出现的次数
t.count('a')--->1
⑺、index(): 如果指定范围内包含指定元素则返回开始的索引值,否则会报错
t.index('c',2,3)--->2
五、字典
dict:无序,可变类型,可以存储多个值 dic = {'name': 'egon', 'age': 18}
1、作用:用key:value来记录由多种特征的多个值,用key对应value,其中key对value有描述性的功能
2、定义:在{}内,用逗号分割开多元素,每一个元素都是key:value的形式,其中value可以是任意类型,
而key是不可变类型,通常应该是str类型
3、类型转换:dict()可以把*有规律的特定类型*转换为字典类型
dict(x=1,y=2,z=3)-->{'x':1,'y':2,'z':3}
items=[('name','egon'),('age',18)]--->dict(item):{'name': 'egon', 'age': 18}
4、常用内置方法(使用):dic={'name':'egon','age':18}
⑴、按key存取值:可存可取
dic['name']--->'egon'(当key不存在时会报错)
dic.get('name')--->'egon'(当key不存在时会返回None,可指定返回默认值)
⑵、统计字典元素个数:len() len(dic)--->2(一组key:value为一个元素)
⑶、成员运算in,not in:以key为依据
⑷、增加、修改元素
①、dic['name'] = 'nicole'--->dic :{'name':'nicole','age':18}
(当字典中存在'name'时会把原字典中的value替换,没有时会添加一个新的key:value在字典中)
②、update():更新合并,当字典中存在相同的key时会把原字典中的value替换,没有就会把新的key:value添加到字典中
dic.update({'age':19,'gender':'male'}) --->{'name':'egon','age':19,'gender':'male'}
③、setdefault():以(key,value)的形式传入两个参数,当字典中存在、key时不做任何改动,
当字典中没有key时就会把新的key:value添加到字典中
dic.setdefault('gender','male')--->dic:{'name':'egon','age':18,'gender':'male'}
④、把列表中的元素转换为字典的key l=['name','age']
l=['name','age'],d={}.fromkeys(l,None)--->d:{'name': None, 'age': None}
⑸、删除元素
①、删除:del dic['age']--->dic:{'name':'egon'}
②、弹出:dic.pop('name')--->dic:{'name':'egon'},
弹出的内容可以接收到(dic.pop()接收velue,dic.popitem()可同时接收key,value)
⑹、可以用for循环取值
for k in dic.keys(): or for k in dic: ---> name,age
for v in dic.values(): --->egon,18
for k,v in dic.items(): --->(name, egon),(age,18)
六、集合
set:无序,不可变,多个值,元素不能重复
1、作用:主要用于关系运算和去重
2、定义:在{}内用逗号分隔开多个不可变元素
定义一个空集合要用set申明
a = {}-->
b = set({}) -->
c = set() -->
3、类型转换:set()可以把指定类型(列表,字符串,元组)转换为集合
4、常用内置方法(使用):s1 = {2,5,7}, s2 = {2,3,5,6}
⑴、统计集合元素个数:len(s1) len(s1)--->3
⑵、成员运算in,not in:判断一个元素是否存在集合中
⑶、|:合集:s1,s2中的所有元素
(s1|s2)--->{2, 3, 5, 6, 7}
⑷、&:交集:s1,s2共有的元素
(s1 & s2)--->{2, 5}
⑸、-:差集:只有某个集合中才有的元素
(s2 - s1)--->{3, 6}
⑹、^:对称差集:除s1,s2共有元素外的所有元素(即合集-交集)
⑺、==:判断两个集合中的元素(去重后的)是否全部相同
⑻、>,>=,<,<=:判断两个集合是否是包含于被包含的关系
⑼、update():合并
s1.update(s2)--->s1:{2, 3, 5, 6, 7}
⑽、add():给集合增加一个元素
s1.add(4)--->s1:{2, 4, 5, 7}
⑾、pop()随机删除集合中的一个元素
s1.pop()-->s1:{ 5, 7}
⑿、remove():移除集合中的指定元素,不存在会报错
s1.remove(2)--->s1:{5, 7}
⒀、discard()移除集合中的元素,且如果元素不存在,不会发生错误
s1.discard(6)--->None
七、布尔类型(bool)
True,Flas
所有数据类型自带布尔值
布尔值为假的数据类型:0,None,空对象
八、None类型
print(type(None))--->