按存值个数区分:
标量/原子类型(单个): 数字(整形/浮点型),字符串
容器类型(多个): 列表,元组,字典,集合
按可变不可变区分:
可变: 列表,字典,集合
不可变: 数字(整形/浮点型),字符串,元组
按访问顺序/取值方式区分:
直接访问: 数字(整形/浮点型)
索引/顺序访问(序列类型): 字符串,列表,元组
key值访问(映射类型): 字典
有序/无序区分:
有序:字符串,列表,元祖
无序:字典,集合
内容:
可变和不可变类型
基本数据类型与内置方法:
数字类型: int float
进制转换关系
字符串类型
列表类型
为何数据要分不同的类型
数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示
可变不可变类型
可变类型: 值变了,但是id没有变,证明没有生成新的值而是在改变原值,原值是可变类型
不可变类型:值变了,id也跟着变,证明是生成了新的值而不是在改变原值,原值是不可变
基本数字类型
一: 整型int
======================================基本使用======================================
1、用途: 记录年龄\等级\各种号码
2、定义方式:
age=18
age=int(18) #只能将纯数字的字符串转换成整型
3、常用操作+内置的方法
赋值\比较\算术
======================================该类型总结====================================
存一个值
不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
二 浮点型float
======================================基本使用======================================
1、用途: 记录身高\体重\薪资
2、定义方式
salary=float('3.1')
print(salary,type(salary))
3、常用操作+内置的方法
赋值\比较\算术
======================================该类型总结====================================
存一个值
不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
--------------------------------------
其他进制=>十进制
十进制: 0-9
13 = 1*10^1 + 3*10^0
二进制: 0 1
八进制: 0-7
十六进制:0-9 A-F
十进制=>其他进制
print(bin(18)) #0b10010 # 十进制=>二进制
print(oct(18)) #0o22 # 十进制=>八进制
print(hex(18)) #0x12 # 十进制=>十六进制
-------------------------------------------
字符串类型
======================================基本使用======================================
1、用途:记录描述性质的特征,比如名字\地址\性别
2、定义方式:在单引号\双引号\三引号内包含的一串字符
可以将任意类型转换成字符串
3、常用操作+内置的方法
优先掌握的操作(*****):
1、按索引取值(正向取+反向取) :字符串只能取,不能改
2、切片(顾头不顾尾,步长): 想要从一个大字符串中切出一个小字符串
print(msg[-1::-1])#字符串反向#掌握
3、长度len #一个中文也是一个字符
4、成员运算in和not in
5、移除字符串左右两边的字符strip:默认去空格 (x.strip())
6、切分split:针对有规律字符串按照某个字符切成列表(x.split(' ')
7、循环
======================================该类型总结====================================
存一个值
有序
不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
需要掌握的操作(****)
1、strip,lstrip,rstrip #左右移除字符,左移除字符,右移除字符 (x.strip('*'))
2、lower,upper #全小写,全大写 (x.lower())
3、startswith,endswith #开头判断,末尾判断 (x.startswith())
4、format的三种玩法 #格式化,{}里用变量名/空白/索引
print('my name is {name} my age is {age} '.format(age=18,name='egon练习'))
print('my name is {} my age is {} '.format(18,'egon练习'))
print('my name is {1} my age is {0} '.format(18,'egon练习'))
5、split,rsplit #拆分,从右往左拆分 (x.split('*',2#最大拆分数))
6、join #合并,和split对立使用 ('*'.join(x))
7、replace #取代 (x.replace('old','new',2#替换次数))
8、isdigit #只能判断纯数字的字符串 (x.isdigit())
isnumeric ,判断中文数字和罗马数字
了解的操作(**)
find,顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引 (x.find('a'))
index,同上,但是找不到会报错 (x.index('a'))
count,计数,顾头不顾尾,如果不指定范围则查找所有(x.count('a'))
center,居中,中间取值,两边填充 (x.center(50#填充数量,'*'))
captalize,首字母大写 (x.captalize())
swapcase,字母大小写翻转
title,每个单词的首字母大写
列表类型list
======================================基本使用======================================
1、用途:记录多个值,比如人的多个爱好
2、定义方式: 在[]内用逗号分隔开多个任意类型的值
3、常用操作+内置的方法
优先掌握的操作:
1、按索引存取值(正向存取+反向存取):即可存也可以取
2、切片(顾头不顾尾,步长)
3、长度
4、成员运算in和not in
5、追加 #追加不改变原来列表的内存地址 x.append('a')
6、删除
按照元素值去单纯地删除某个元素,del和remove没有返回值(del x[0]) (x.remove('a'))
pop按照元素的索引去删除某个元素并且拿到该元素作为返回值(x.pop(1))
7、循环
======================================该类型总结====================================
存多个值
有序
可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
需要掌握的操作
count统计某个元素出现的次数 (x.count('a'))
extend,追加列表中多个元素 (x.extend(['a','b','c']))
append,只追加一个元素(如列表,则列表作为一个整体) (x.append([1,2,3]))
index查找,按索引范围时顾头不顾尾,找不到就报错(x.index('a'))
insert增加,没有返回值 (x.insert(1#索引的位置,'a'))
reverse 整个反转,不会排序 (x.reverse())
sort从小到大排序 (x.sort())
sort从大到小排序(x.sort(reverse=True))
练习
队列: 先进先出
入队 # q.append('first')
出队 # print(q.pop(0))
堆栈: 先进后出
入栈 # q.append('first')
出栈 # print(q.pop(-1))