python - 第二天

数字:

Python 数字数据类型用于存储数值。

数据类型是不允许改变的 ,这就意味着如果改变数字数据类型的值,将重新分配内存空间

也就是如果修改了某个变量的值,会重新为该变量分配内存空间,但似乎改变列表(下方的变量b)内的元素,列表的内存空间没有改变,感觉b的存在类似于指针。

例子如下:

复制代码
a=10;
b=[1,2,3];
print("原本的a的地址:",id(a));
print("原本的b的地址:",id(b));
print("原本的b[0]的地址:",id(b[0]));

a=20;
b[0]=4;
print("修改后的a的地址:",id(a));
print("修改后的b的地址:",id(b));
print("修改后的b[0]的地址:",id(b[0]));

运行结果:

从运行结果上来看,列表内的元素的内存地址空间不是连续的,我简单查了一下,既然不连续,那b指向的这个空间存储的是什么,如下:(感觉python存储数据的方式目前很模糊了)

列表 b 的内存块是连续的,存储的是元素的引用(内存地址)。
列表中的元素本身(如整数 1、2、3、4)存储在不同的内存位置,但这些内存地址在列表的内存块中是按顺序排列的

可以使用del语句 删除一些数字对象的引用

del语句的语法是:

复制代码
del var1[,var2[,var3[....,varN]]]

您可以通过使用del语句删除单个或多个对象的引用,例如:

复制代码
del var
del var_a, var_b

例子如下:

复制代码
a=[1,2,3];
b=a;

del  a[0];
print(b);

del  a[-1];
print(b);

del a;
print(b);

运行结果:

python支持三种数值类型:整型,浮点型和复数。

复数的赋值可以直接用 a+bj 形式,比如:1+2j ,或者使用 complex(a,b);a为实部,b为虚部,两者都是浮点型。

python的数值类型转换

  • int(x) 将x转换为一个整数。(int型是直接截取整数部分,后面全部舍弃,且不能转换复数

  • float(x) 将x转换到一个浮点数。

  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

例子如下:

复制代码
a=1.6;
b=int(a);
print(b);

c=1+2j;
d=int(c);#这个会报错,因为复数不能转换为整型
print(d);

运行结果:

1 是对 a 进行 int 转换的结果,是 b 的值,后面的报错是因为对复数 c 进行了 int 转换,这个错误信息表明尝试将一个复数(complex)类型转换为整数(int)类型,而这是不允许的。int() 函数只能接受字符串、字节对象或实数(如整数和浮点数)作为参数,不能接受复数

python的数字运算

数字运算和我们日常的使用表达基本一致,比如:1+2,3-5,2*3之类的,这就是表达式,记得 ** 是幂运算, // 是除法中,只保留整数的部分,小数部分丢弃,向下取整(保留的是整数部分,但不一定是整型 ,结果具体是什么类型,和除数,被除数有关,如果有浮点数,那么结果就是浮点数。) **%**是模运算,取余,结果是除法的余数。

变量在使用前必须先"定义"(即赋予变量一个值),否则会出现错误:

除此之外还有各种可以使用的数字函数,太多了,到时候需要了,再去记忆吧。

个人感觉, 数字中需要注意的是,有哪些运算可以使用比如幂,取整,取余,不同类型混合运算时系统如何进行的类型转换,有哪些数字函数。

字符串

可以使用单引号或者双引号来创建字符串(英文输入下的)

Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用

访问字符串中的值

可以使用**方括号 [ ]**来截取字符串,字符串的截取的语法格式如下:

复制代码
变量[头下标:尾下标]

字符串中不同位置字符的索引值如图:

eg:

复制代码
a="hello.world";
b=a[1:3];
c=a[-3:-1];
print(b,c);
print(a[0],a[-1]);
print(a[0:4:2]);#这里0:4:2表示从0开始到4结束,每隔2个取一个元素,但不包括索引值为4的那个字符,即第五个字符

运行结果:

字符串更新和拼接:

在 Python 中,**字符串(str)是不可变对象。**一旦创建,字符串的内容就不能被修改。任何试图修改字符串内容的操作都会导致 TypeError。

可以截取字符串的一部分并与其他字段拼接;

eg:

复制代码
a="hello.world";
print(a);
a[0]="H";#字符串是不可变的,这里会报错;
a[-3:-1]="WWW";#同样报错;
print(a);

运行结果:

如果真的想要改变字符串中的值,可以

1,创建一个新的字符串:

通过字符串切片和连接来创建一个新的字符串。

eg:

复制代码
a="hello.world";
print(a);
print("原本a的地址:",id(a));
a="H"+a[1:]; #这里通过拼接完成了改变,a[1:],表示从第二个字符开始到最后一个字符
print(a);
print("修改后的a的地址:",id(a));

运行结果:

这里也说明了,刚刚上面说的如果改变数字数据类型的值,将重新分配内存空间。

2,使用列表进行修改:

可以先将字符串转换为列表,修改列表后再将其转换回字符串。

复制代码
a = "".join(b);#将列表b变成字符串,原列表内的元素通过双引号里面的元素连接

a="hello.world";
print(a);
print("原本a的地址:",id(a));
b=list(a);#将a转换成了一个列表,相当于["h","e","l","l","o",".","w","o","r","l","d"]。
b[0]="H";
a=" ".join(b);#将列表转换成字符串,相当于"H"+"e"+"l"+"l"+"o"+"."+"w"+"o"+"r"+"l"+"d"。
             #" "这里面有个空格,意思是使用空格连接列表内的这些元素,让其变成字符串print(a);
print(a);
print("修改后的a的地址:",id(a));
a="".join(b);#将列表转换成字符串,相当于"Hello.world"。
             #这里""里面上面都没有,相当于直接连接列表内的元素,让其变成字符串。,也可以使用其他的符合,比如逗号啥的
print(a);

运行结果如下:

3,格式化字符串:

使用字符串格式化方法(如 str.format() 或 f-string)来创建新的字符串。(这个暂时不明白,问的ai)

eg:

复制代码
a = "hello"
a = a[:0] + "H" + a[1:]  # 使用切片和连接
print(a)  # 输出: Hello

# 或者使用 f-string
a = "hello"
a = f"H{a[1:]}"
print(a)  # 输出: Hello

还有各种转义字符,也太多了,边用边记忆吧。

字符串运算符:

|---------|------------------------------------------------------------------------------------------------------------|---------------------------------------|
| + | 字符串连接 | a + b 输出结果: HelloPython |
| * | 重复输出字符串 | a*2 输出结果:HelloHello |
| [] | 通过索引获取字符串中字符 | a[1] 输出结果 e |
| [ : ] | 截取字符串中的一部分,遵循左闭右开 原则,str[0:2] 是不包含第 3 个字符的。 | a[1:4] 输出结果 ell |
| in | 成员运算符 - 如果字符串中包含给定的字符返回 True | 'H' in a 输出结果 True |
| not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | 'M' not in a 输出结果 True |
| r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | print( r'\n' ) print( R'\n' ) |
| % | 格式字符串 | 请看下一节内容。 |

字符串格式化:

最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

eg:

复制代码
print("my name is %s,and my age is %d."%("guo",100));# %前面是没有逗号的,注意

运行结果:

下面的格式化操作符辅助指令感觉还是要看一下:

格式化操作符辅助指令:

符号 功能
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

字符串还有内容,明天补。

相关推荐
江上月5133 小时前
django与vue3的对接流程详解(上)
后端·python·django
老歌老听老掉牙3 小时前
基于 PyQt5 实现刀具类型选择界面的设计与交互逻辑
python·qt·交互
可触的未来,发芽的智生3 小时前
触摸未来2025.10.09:记忆的突围,从64个神经元到人工海马体神经网络
人工智能·python·神经网络·机器学习·架构
川石课堂软件测试4 小时前
什么是BUG,你对BUG的了解有多少?
android·linux·服务器·python·功能测试·bug·安全性测试
风之所往_4 小时前
使用 openpyxl 生成 excel 折线图
python·excel·openpyxl
努力也学不会java5 小时前
【Java并发】揭秘Lock体系 -- 深入理解ReentrantReadWriteLock
java·开发语言·python·机器学习
我的xiaodoujiao7 小时前
从 0 到 1 搭建 Python 语言 Web UI自动化测试学习系列 15--二次开发--封装公共方法 3
python·学习·测试工具
AI视觉网奇7 小时前
pyqt 触摸屏监听
开发语言·python·pyqt
香菜+7 小时前
python脚本加密之pyarmor
开发语言·python