学习内容:
一、赋值
(一)链式赋值
一个对象赋值给多个对象
x = y = 123
(二)系列解包赋值
系列数据赋值给相同个数的变量
a,b,c = 4,5,6
变量互换:
a,b = b,a
二、常量
Python不支持常量,只能逻辑上不修改变量值
三、最基本内置数据类型
- 整型
- 浮点型
- 布尔型
- 字符串型
四、整数
(一)各类进制
| 进制 | 缩写 |
|---|---|
| 二进制 | 0b或0B |
| 八进制 | 0o或0O |
| 十六进制 | 0x或0X |
缩写+数,得到十进制对应值
Oxff #即十六进制ff,得到255(十进制)
(二)类型转换
int(x)
- 当x为浮点数,舍去小数部分
- 当x为布尔值,True转为1,False转为0
- 当x为字符串,内容为整数格式则直接转为对应整数(类型转为整数型),其余无法转换
(三)自动转型
整数与浮点数混合运算,自动转为浮点数
(四)整数无上限
可以做超大数计算,不会“整数溢出”,所以适合科学运算。
五、浮点数
浮点数float:科学计数法形式 a × b^10,在内存中也是科学计数法存储。
例如3.14 表示成314E-2 或者314e-2
(一)类型转换
- 将其他类型转换成浮点数
float()
- 整数与浮点数混合运算,结果自动转型成浮点数;
- 四舍五入返回值,但不改变原有值,是产生新的值
round(value)
六、增强型赋值运算符
运算符 + - * / // ** % 和赋值符 = 结合可以构成增强型赋值运算符,两个符号结合不加空格
例如: a = a+1 等价于 a += 1
七、时间的表示
unix时间点:1970年1月1日 00:00:00
从unix时间点开始,以毫秒(1/1000秒)进行计算
返回当前时刻值,得到浮点值
import time
time.time()
八、布尔值
本质仍然是:True为1,False为0
九、运算符
| 运算符 | 说明 |
|---|---|
| + , - , * | 加法、减法、乘法 |
| / | 浮点除数法 |
| // | 整数除法 |
| % | 模 |
| ** | 幂 |
| and , or , not | 布尔与、布尔或、布尔非 |
| l , ^ , & | 按位或、按位异或、按位与 |
| ~ | 按位翻转 |
| << , >> | 移位 |
函数divmod(x,y)得到商和余数
(一)比较运算符
返回1为真,等价于True。
返回2为假,等价于False。
| 比较运算符 | 描述 |
|---|---|
| == | 等于 |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
比较运算符可以连用,如3<a<10
(二)逻辑运算符
| 运算符 | 格式 |
|---|---|
| or 逻辑或 | x or y |
| and 逻辑与 | x and y |
| not 逻辑非 | not x |
(三)同一运算符
比较两个对象的存储单元,实际比较的是对象的地址。
is 判断两个标识符是不是引用同一个对象;
is not 判断两个标识符是不是引用不同对象;
注意 is 与 == 的区别:
- is用于判断两个变量引用对象是否为同一个,即比较对象的地址;
- ==用于判断引用变量引用对象的值是否相等,默认调用对象的__eq__()方法;
- is 运算符比 == 效率高,在变量和None进行比较时,应该使用is。
整数缓存问题
执行命令行的过程中,Python仅仅对比较小的整数对象(范围在[-5 , 256])进行缓存,并非所有整数。(两个变量值在范围内,则地址也会变成同一个id)
在保存为文件执行的过程中,解释器优化了范围变成 [-5 , 任意正整数]。
(四)位操作
a = 0b11001
b = 0b01000
c1 = a|b
c2 = a^b
c3 = c&b
bin©
得到c1 = 0b11001 ,c2 = 0b10001 , c3 = 0b1000
a = 3
a<<2
a>>1
左移1位相当于乘以2,左移2位相当于乘以4,右移1位相当于除以2
(五)加法操作
- 数字相加
- 字符串拼接
- 列表、元组等合并
(六)乘法操作
- 数字相乘
- 字符串复制
- 列表、元组等复制
(七)复合赋值运算符
含义基本相同,可用的符号有: += ,-= , *= , /= , //= , %= , **= , <<= ,>>= , &= , |= ,^=
(八)运算符优先级
从高到低顺序为: ** , ~ , * / % // , + - ,>> << ,& , ^ | , <= == != , = %= /= //= -= += *= **= , is is not , in not in ,not or and
复杂表达式可用小括号组合,规律如下:
- 乘除优先加减
- 位运算合算术运算 > 比较运算 > 赋值运算 >逻辑运算符
乘除优先加减
十、字符串
字符串的本质:字符序列。
Python的字符串是不可变的,但是可以将字符串的一部分复制到新创建的字符串。
Python不支持单字符类型,单字符也是作为一个字符串使用。
(一)字符串的编码
Python3的字符默认16位Unicode编码,ASCⅡ码是Unicode编码的子集。
ord() :把字符转换成对应的Unicode码
chr() :把十进制数字转换成对应的字符
(二)创建字符串
用单引号或者双引号,如果字符串本身就包含引号,不需要用转义字符,可以两种交替使用。
用连续三个单引号或者连续三个双引号,可以创建多行字符串。
(三)空字符串和len()函数
Python允许空字符串,即len(变量名)为0
(四)转义字符
转义字符:\ + 特殊字符
| 转义字符 | 描述 |
|---|---|
| \(行尾) | 续行符 |
| \ | 反斜杠符号 |
| \‘ | 单引号 |
| \“ | 双引号 |
| \b | 退格(Backspace) |
| \n | 换行 |
| \t | 横向制表符 |
| \r | 回车 |
(五)字符串拼接
可以使用 + 或者直接放到一起,实现多个字符串拼接,生成一个新的字符串。
- 如果+两边是字符串,则拼接;
- 如果+两边是数字,则做加法运算;
- 如果+两边类型不同,则抛出异常;
(六)字符串复制
使用 * 实现字符串复制
(七)不换行打印
调用print(),多次打印会自动换行,可以在字符串后增加参数end = “任意字符串”,实现打印不换行。
print (“字符串”, end = ‘末尾增加字符’)
(八)控制台读取字符串
input(“请输入内容:”)
(九)数字转换成字符串
str()
可以是int、float、bull等多种数字类型
(十)用[]提取字符
在字符串后添加[],并在[]中指定偏移量,来提取该位置的单个字符。
- 正向搜索:最左侧,从0开始,直到 len(str) -1为止
- 反向搜索:最右侧,从-1开始,直到 - len(str)为止
(十一)字符串替换
a.replace(‘x’ , ‘y’)
原字符串没有改变,创建了新的字符串对象,可以赋值给一个变量。
(十二)字符串切片
切片slice:快速提取子字符串,标准格式:[ 起始偏移量start : 终止偏移量end : 步长step ],包头不包尾
| 典型切片操作 | 说明 |
|---|---|
| [ : ] | 提取整个字符串 |
| [ start : ] | 从start开始到结尾 |
| [ : end ] | 从头开始到end-1 |
| [ start : end ] | 从start到end-1 |
| [ start : end : step ] | 从start到end-1,步长step |
| [ : : -1 ] | 步长为负,从右到左反向提取 |
如果起始/终止偏移量不在[ 0 , 字符串长度 -1 ]的范围内,不会报错,会取到头和尾。
(十三)字符串分割与合并
a.split()
基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。
如果不指定,默认使用空白字符(换行符/空格/制表符)。
‘’.join(a)
用引号内的符号连接变量列表内的字符串,为空则直接连接。
拼接符 + 与join()函数的区别:
效率不同。
使用字符串拼接符 + ,会生成新的字符串对象,耗时大,不推荐。join()函数在拼接前会计算所有字符串的长度,如何逐一拷贝,只新建一次对象,速度更快。
(十四)字符串驻留机制
对于符合标识符的字符串(仅包含下划线、字母、数字),启用驻留机制,仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。
(十五)字符串比较
比较符 == 与 != 用于值的比较;
函数 is 与 is not 用于地址的比较。
(十六)成员操作符
函数 in 与 not in 判断某个字符串是否在字符串中。
十一、字符串常用方法
(一)查找方法
| 查找方法 | 说明 |
|---|---|
| len(a) | 长度 |
| a.startwith(“”) | 以指定字符串开头 |
| a.endwith(“”) | 以指定字符串结尾 |
| a.find(“”) | 第一个出现指定字符串的位置(最左侧从0开始) |
| a.rfind(“”) | 最后一个出现指定字符串的位置 |
| a.count(“”) | 指定字符串出现的次数 |
| a.isalnum(“”) | 所有字符是否全是字母/数字 |
(二)去除首尾信息
a.strip()
去除首尾指定信息,为空则默认去除空白字符串
a.lstrip()
a.rstrip()
去除字符串左/右指定信息
(三)大小写转换
以下转换都会生成新的字符串,原字符串不会改变
| 转换方法 | 说明 |
|---|---|
| a.capitalize() | 字符串首字母大写 |
| a.title() | 每个单词首字母大写 |
| a.upper() | 所有字符大写 |
| a.lower() | 所有字符小写 |
| a.swapcase() | 所有字符大小写转换 |
(四)格式排版
a.center(10, “*”)
居中对齐,用指定字符 * 补齐成10个字符,不带逗号后的参数则指定字符为空格。
a.ljust(10, “*”)
a.rjust(10)
靠左/靠右对齐,用指定字符 * 补齐成10个字符,不带逗号后的参数则指定字符为空格。
(五)其他方法
| 方法 | 说明 |
|---|---|
| isalnum() | 是否为字母/数字 |
| isalpha() | 是否字符串只含有字母(含汉字) |
| isdigit() | 是否字符串只含有数字 |
| isspace() | 是否为空白符 |
| isupper() | 是否为大写字母 |
| islower() | 是否为小写字母 |
(六)字符串格式化
a.format()
基本语法通过{} 和: 来替代以前的%
format函数中指定{}中的内容,如果是参数名需要增加(参数名=“”)
(七)填充和对齐
填充常跟对齐一块使用。
:冒号后面带填充的字符,只能是一个字符,不指定默认空格;
^ 居中, < 左对齐, > 右对齐,后面加上宽度(数字)。
“{:*>8}”.format(“245”)
‘*****245’
“我是{0},我喜欢数字{1:0^8}”.format(“msy”,“11”)
‘我是msy,我喜欢数字00011000’
(八)数字格式化
浮点数通过f ,整数通过d ,进行需要的格式化
a = “我是{0},我的存款有{1:.2f}”
a.format(“msy”,3888.234342)
‘我是msy,我的存款有 3888.23’

十二、可变字符串
可使用io.StringIO对象或array模块来原地更改字符串
import io
s = “hello,abc”
sio = io.StringIO(s)
sio.getvalue()
sio.seek(7)
sio.write(“”)
这篇博客详细介绍了Python中的数据类型,包括整数、浮点数、布尔值、字符串的特性及操作,如进制转换、类型转换、赋值运算、字符串的编码与操作方法等,是Python初学者的重要参考资料。
4243

被折叠的 条评论
为什么被折叠?



