Python学习笔记(二)

2.Python的六种内置对象类型

在这里插入图片描述

2.1简要理解对象和变量

说起对象,必需提一下目前常见的编程范式。Python的六种内置对象类型
在这里插入图片描述目前常见的编程范式。诸如面向过程,面向对象,目前而言面向对象的编程范式应用最广泛。因为它更符合我们的习惯,并且重复性和可移植性更好。
可以把任何单元视为对象
面向对象:根据具体场景条件,根据对象的属性和方法,来确定对象该做什么或者怎么做
变量与对象eg:a = 3 a就是变量,它被对象3定义。变量必需依附于对象。
变量与对象建立起的关系称为 引用关系变量a引用了对象4

2.2整数和浮点数

如何确定某个变量引用对象的类型?可以使用type()函数来看
在这里插入图片描述
type是一种内置函数,内置函数就是将python环境安装好后就可以使用的函数,无需自己定义

如何知道两个对象是不是相同的呢?可以通过id()函数来查看每个对象的内存地址
在这里插入图片描述这里可以看到3和3.0实际上是两个不同的对象。
四则运算:a+b ;a-b;a/b ;a*b ;a%b(求余数) a // b(返回商)
函数divmod(a,b),返回(商,余数)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200213192242627.png
提起python的内置函数,官方文档这里给出了所有的内置函数及其解释:
https://docs.python.org/3/library/functions.html
在这里插入图片描述
这里我们学习一个常用函数help(object)
在python中函数也是对象(object)我们也可以用helo去查看它的用法
在这里插入图片描述
一个常见的问题:浮点数的加法无法精确的得到数值。这是因为在进行计算时会自动将小数转化为二进制,但由于小数无法由二进制完全表示就存在一个误差,导致计算出现不准确。
在这里插入图片描述
如何处理这个问题:1.round(),使用help函数来查看round函数的作用
在这里插入图片描述
在这里插入图片描述
round(a,b) b是保留的小数位数,如果小数是0则省略
科学技术法表示浮点数:
在这里插入图片描述
一些函数存在于特定的模块中想要使用必需先引用模块使用关键字import这里我们调用一个math 模块并用dir()函数来查看该模块中可以调用的函数有哪些。在这里插入图片描述
调用格式:math.func(),eg:
在这里插入图片描述
使用help查询模块中函数的使用方法格式:help(math.func)
那这里再介绍另一种处理浮点数计算异常的办法:调用decimal模块
在这里插入图片描述
关于溢出:不论多大的整数都不会溢出,但是浮点数就很容易溢出:
在这里插入图片描述
这里记录下如何执行py文件
我想打开这个路径下的一个python文件:
在这里插入图片描述
使用vscode可以直接打开执行
在这里插入图片描述
也可以使用命令行
在这里插入图片描述

2.3字符和字符串

在这里插入图片描述

2.3.1字符及字符编码

由于计算机只识别二进制数字,所以需要有一种办法将字符和二进制数字一一对应起来,这种处理办法称作字符编码:
最早的编码方式:ASCII码规定了128个英文字符的编码。
使用函数ord可以查看字符对应的ASCII码
在这里插入图片描述
这里显示的数字是将二进制转化成十进制了,英语编码用了1byte 的后7位。表示汉语通常用两个byte
为了统一编码方式出现了unicode。unicode实际上是一个字符集。在这个字符集中有各种各样的编码规则。目前最常用的是UTF-8
2.3.2字符串的定义
在这里插入图片描述
2.3.3序列及其基本操作
序列:有序排列的对象,如果顺序改变就会变成另一种对象。
序列一般有以下几种操作:
(1)连接(+两边必须是同种类型)
在这里插入图片描述
(2)复制
在这里插入图片描述
(3)测量长度
在这里插入图片描述
(4)判断元素是不是在序列中
在这里插入图片描述
2.3.4索引和切片
索引:给序列进行一个编号,如果从左往右,第一个编号是0,如果从右往左第一个编号是-1
在这里插入图片描述
切片:c [a🅱️c]
a表示起始字符,如果不写默认从第一个字符开始,b表示终止字符(不包括b),如果不写表示切到最后一个字符,c表示步长,如果为正数从左往右切,如果为负数从右往左边切。
在这里插入图片描述
2.3.5与字符串相关的两个内置函数
print() input()
在这里插入图片描述
2.3.6字符串的常用属性和方法&格式化输出
使用dir()来查看字符串对象的常用方法,并用help()查看注释
这里查看了index
在这里插入图片描述
在这里插入图片描述
从help的提示可以看出这是一个查找序列子集索引的办法,start和end可以指定查找的区间,如果不写默认从整个序列里查找。

字符串与列表相互转化的方法:
split() join()
在这里插入图片描述
字符串的格式化输出:
在这里插入图片描述

2.4列表

在这里插入图片描述
列表右两种定义办法:一种是直接方括号写入元素,另一种是使用list()函数。列表中的元素可以是python中的任意对象,整数,浮点数,字符串,列表,元组,字典,都可以
在这里插入图片描述
列表也是一种序列,列表中的元素也是可以重复的
索引和切片的规则,序列都是通用的,所以和字符串是一样的。
在这里插入图片描述
与字符串不同的地方在于,列表支持这种修改方式,但字符串不可以。
列表是一种有序,可变的序列,容器
在这里插入图片描述
字符串的加法,乘法,in操作也完全适用于列表。
列表的方法,同样使用DIR函数。
在这里插入图片描述如何给列表添加元素?
append() insert()
在这里插入图片描述
这里可以看到append函数将新增加的元素添加到列表的末尾,而insert函数将新增加元素添加到索引对象之前。
在这里插入图片描述
函数extend()
在这里插入图片描述
从help的描述可以看出,extend函数添加的是一个可迭代的对象,列表是一个可迭代的对象,这里新建了一个列表lst2并将这个列表添加到了lst里面。

再来看下删除的操作pop和remove
在这里插入图片描述
可以看出pop会删除指定的索引,如果没有填写该索引默认是-1,并返回删除的元素
在这里插入图片描述
可以看出remove删除指定的元素并且没有返回值。(如果指定元素在列表中有重复,则默认删除第一次出现的该元素
clear()
清空列表中的全部元素lst,clear()

排序
sort,sorted ,reverse,以及之前提到的切片的办法
在这里插入图片描述
sorted可以新生成一个排序的列表,不影响之前的列表
在这里插入图片描述
对比列表和字符串:都是序列,但列表也是容器类对象。列表是可变序列,字符串不可变。

2.5元组

定义元组有两种办法:
在这里插入图片描述
如果创建只有一个元素的的元组需要 添加”,”
在这里插入图片描述
元组与列表最大的区别是元组的元素不可以修改,如果一定要修改,先使用list()函数转化成列表,修改好之后再用tuple()函数恢复成元组

元组运行的速度要快于列表;

元组和列表的共同的点是他们都是序列,索引切片这些操作也适用于元组。

2.6字典

关于字典的定义:有三种办法
在这里插入图片描述
我这里犯了一个错误,第一个变量命名成立函数dict()的名字,导致dict变成了不是可用的内置函数类型。
这里通过del()语句将第一个变量删除后旧恢复了正常。
第三种办法还是使用dict函数,不过函数的对象是列表,列表的里面的元素是元组
在这里插入图片描述
定义中冒号前的对象称为:键(key),冒号后的对象称为:值(value)
字典中的元素是一种映射关系,他们被称为键值对。

字典中的key必须是唯一的,不可变的对象,到目前为止接触的不可变对象有元组,整数,浮点数,字符串。列表作为可变的对象是不能称为字典的key的

提取字典的元素:dic[key ],返回key映射的value
字典不是序列,字典也是一个可变对象。

字典的操作方法:
1)如何判断一个键是不是在字典里?
get()函数
在这里插入图片描述
如果这个键在字典里,返回键对应的值,如果不在,则返回后面的值。

setdefault()用法同get一样,不同的是,如果查询的键不在字典里,则会将这个键以及后面的值插入到字典。
2)在字典中增加元素:
update()
在这里插入图片描述
如果一个字典里面不包含一个键值对可以直接这样添加:
在这里插入图片描述
这里可以看到定义了一个空字典,但是操作之后字典中出现了赋值的键值对。
3)删除操作:
del语句
在这里插入图片描述
pop()函数
在这里插入图片描述
删除并返回键值对对应的值

popitem()默认删除字典中最后的一个键值对。
字典和列表异同
二者都是容器类对象,字典不是序列,列表是序列。字典和列表都是可变对象

2.7集合

可变集合与不可变集合的定义:
在这里插入图片描述
这里可以看出集合的无序性

删除操作:
在这里插入图片描述
其中pop()是随机删除集合中的一个元素,而remove是删除指定元素
如果创建不可变集合使用frozenset

copy()
集合作为容器来对象和字典列表用有一个共同的用法就是copy
查看copy的文档发现:return a shallow copy of
这里需要理解以下这个shallow
在这里插入图片描述
以列表为例shallow copy 浅在值copy了第一层对象,列表中的列表(第二层)没有copy 当被拷贝对象的第二层发生改变了时候,拷贝对象的第二层也会发生改变

如果想使用深copy则需要调用模块:
在这里插入图片描述
元素与集合的关系,集合与集合的关系,集合之间的运算
元素与集合的关系:in来判断
元素间的关系:超集:issupperset 子集:issubset
在这里插入图片描述
集合间的运算:
∩,∪,-
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值