【第三课】Python数据入门2022.5.27

这篇博客详细介绍了Python中的数据类型,包括整数、浮点数、布尔值、字符串的特性及操作,如进制转换、类型转换、赋值运算、字符串的编码与操作方法等,是Python初学者的重要参考资料。

学习内容:

一、赋值

(一)链式赋值

一个对象赋值给多个对象

x = y = 123

(二)系列解包赋值

系列数据赋值给相同个数的变量

a,b,c = 4,5,6

变量互换:

a,b = b,a


二、常量

Python不支持常量,只能逻辑上不修改变量值


三、最基本内置数据类型

  1. 整型
  2. 浮点型
  3. 布尔型
  4. 字符串型

四、整数

(一)各类进制

进制缩写
二进制0b或0B
八进制0o或0O
十六进制0x或0X

缩写+数,得到十进制对应值

Oxff #即十六进制ff,得到255(十进制)

(二)类型转换

int(x)

  1. 当x为浮点数,舍去小数部分
  2. 当x为布尔值,True转为1,False转为0
  3. 当x为字符串,内容为整数格式则直接转为对应整数(类型转为整数型),其余无法转换

(三)自动转型

整数与浮点数混合运算,自动转为浮点数

(四)整数无上限

可以做超大数计算,不会“整数溢出”,所以适合科学运算。


五、浮点数

浮点数float:科学计数法形式 a × b^10,在内存中也是科学计数法存储。
例如3.14 表示成314E-2 或者314e-2

(一)类型转换

  1. 将其他类型转换成浮点数

float()

  1. 整数与浮点数混合运算,结果自动转型成浮点数;
  2. 四舍五入返回值,但不改变原有值,是产生新的值

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 与 == 的区别:

  1. is用于判断两个变量引用对象是否为同一个,即比较对象的地址
  2. ==用于判断引用变量引用对象的值是否相等,默认调用对象的__eq__()方法;
  3. 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

(五)加法操作

  1. 数字相加
  2. 字符串拼接
  3. 列表、元组等合并

(六)乘法操作

  1. 数字相乘
  2. 字符串复制
  3. 列表、元组等复制

(七)复合赋值运算符

含义基本相同,可用的符号有: += ,-= , *= , /= , //= , %= , **= , <<= ,>>= , &= , |= ,^=

(八)运算符优先级

从高到低顺序为: ** , ~ , * / % // , + - ,>> << ,& , ^ | , <= == != , = %= /= //= -= += *= **= , is is not , in not in ,not or and

复杂表达式可用小括号组合,规律如下:

  1. 乘除优先加减
  2. 位运算合算术运算 > 比较运算 > 赋值运算 >逻辑运算符

乘除优先加减


十、字符串

字符串的本质:字符序列。
Python的字符串是不可变的,但是可以将字符串的一部分复制到新创建的字符串。
Python不支持单字符类型,单字符也是作为一个字符串使用。

(一)字符串的编码

Python3的字符默认16位Unicode编码,ASCⅡ码是Unicode编码的子集。
ord() :把字符转换成对应的Unicode码
chr() :把十进制数字转换成对应的字符

(二)创建字符串

用单引号或者双引号,如果字符串本身就包含引号,不需要用转义字符,可以两种交替使用。
用连续三个单引号或者连续三个双引号,可以创建多行字符串。

(三)空字符串和len()函数

Python允许空字符串,即len(变量名)为0

(四)转义字符

转义字符:\ + 特殊字符

转义字符描述
\(行尾)续行符
\反斜杠符号
\‘单引号
\“双引号
\b退格(Backspace)
\n换行
\t横向制表符
\r回车

(五)字符串拼接

可以使用 + 或者直接放到一起,实现多个字符串拼接,生成一个新的字符串。

  1. 如果+两边是字符串,则拼接;
  2. 如果+两边是数字,则做加法运算;
  3. 如果+两边类型不同,则抛出异常;

(六)字符串复制

使用 * 实现字符串复制

(七)不换行打印

调用print(),多次打印会自动换行,可以在字符串后增加参数end = “任意字符串”,实现打印不换行。

print (“字符串”, end = ‘末尾增加字符’)

(八)控制台读取字符串

input(“请输入内容:”)

(九)数字转换成字符串

str()

可以是int、float、bull等多种数字类型

(十)用[]提取字符

在字符串后添加[],并在[]中指定偏移量,来提取该位置的单个字符。

  1. 正向搜索:最左侧,从0开始,直到 len(str) -1为止
  2. 反向搜索:最右侧,从-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(“”)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值