Python知识点整理(详细)
- 输出函数
- print()
可以向屏幕打印内容,或者在打开指定文件后,向文件中输入内容
- print()
- 输入函数
- input([prompt])
[prompt] 为输入的提示字符。该函数返回在屏幕中输入的内容
- input([prompt])
- 变量
- 变量的定义
变量由 标识、类型、值 三部分组成a = “test”a :即为变量 test:为值可以通过 id(a) 来获取变量的标识(唯一) type(a)获取变量类型
- 变量的定义
- 数据类型
- 整数类型
可以表示正数、负数和零整数的不同进制表示方式十进制 --> 默认的进制 如 18二进制 -->以 0b开头八进制 -->以0o开头十六进制 -->以0x开头 - 浮点数类型
浮点数由整数部分和小数部分组成使用浮点数进行计算时,可能会出现小数位数不确定的情况,通过导入模块 decimal 使用 Decimal() 函数解决。 例如 Decimal(‘1.1’) + Decimal(‘2.2’) #3.3 可以精确到小数点后一位 - 布尔类型
用来表示真或假的值True表示真,false表示假布尔值可以转换成整数True -- 1 false -- 0 - 字符串类型
字符串又被称为不可变的字符序列可以使用 单引号、双引号、三引号来定义单引号和双引号定义的字符串必须在一行三引号定义的字符串可以分布在连续的多行
- 整数类型
- 数据类型转换
- 转换成 str()类型
使用 引号 即可进行转换或者使用 str() - 转换成 int()类型
1、文字类和小数类字符串无法转换成整数2、浮点数转换成整数,抹零取整使用 int () - 转换成 float()类型
1、文字类无法转换成整数2、整数转换成浮点数,末尾为 .0使用 float ()
- 转换成 str()类型
- 注释
- 单行注释
以 # 开头,直到换行结束 - 多行注释
将一对三引号之间的代码,成为多行注释 - 中文编码声明注释
在文件开头加上中文声明注释,用以指定源码文件的编码格式
- 单行注释
- 运算符
- 算术运算符
- 标准运算符
加 + 减 - 乘 * 除 /其中 11/2 = 5.5 是除法运算 11//2 = 5是整除运算 一正一负时,向下取整 - 取余运算符
%余数 = 被除数 - 除数*商 #注意一正一负的情况 - 幂运算符
**a = 2**3 # 8 2的3次方=8
- 标准运算符
- 赋值运算符
执行顺序: 右→左支持链式赋值: a=b=c=20支持参数赋值:+=、-=、*=、....支持系列解包赋值:a,b,c = 20,30,40; - 比较运算符
>、 <、 >=、 <=、 !=== 对象 value的比较 (值比较)is、is not 对象的 id 比较 - 布尔运算符
and、or、not、in、not in - 位运算符
位与 & :对应数位都是 1,结果数位才是 1 ,否则为 0 位或 !:对应数位都是 0 ,结果数才是 0 ,否则为 1左移位运算符 << :高位溢出舍弃,低位补 0右移位运算符 >> :低位溢出舍弃,高位补 0 - 运算符优先级
算术 > 位 > 比较 > 布尔 > 赋值
- 算术运算符
- 对象的布尔值
Python 一切皆对象,所有对象都有一个 布尔值获取对象的布尔值: bool()以下对象的布尔值为 falseFalse数值()None空字符串空列表空元组空字典空集合 - 选择结构
- 单分支结构
- 中文语义
如果 .. 就... - 语法结构
if 条件表达式: 条件执行体
- 中文语义
- 双分支结构
- 中文语义
如果 .. 就.. 不是...就... - 语法结构
if 条件表达式: 条件执行体1else: 条件执行体2
- 中文语义
- 多分支结构
- 中文语义
如果不是 .. 就..不是..就..不是..就..不是..就..不是..就..是.. 就.. - 语法结构
if 条件表达式1: 条件执行体1elif 条件表达式2: 条件执行体2elif 条件表达式N: 条件执行体N[else:] 条件执行体 N+1
- 中文语义
- 嵌套if
- 语法结构
if 条件表达式1: if 内层条件表达式: 内层条件执行体1 else : 内层条件执行体2else : 条件执行体
- 语法结构
- 单分支结构
- 条件表达式
- 中文语义
条件表达式是 if....else 的简写 - 语法结构
x if 判断条件 else y - 运算规则
如果判断条件的布尔值为True,条件表达式的返回值为 x,否则返回 y
- 中文语义
- pass语句
- pass语句什么都不做,只是一个占位符,用在语法上需要语句的地方
- 先搭建语法结构,还没想好代码怎么写的时候使用
- 与以下语句一起使用
if 语句的条件执行体for-in 语句的循环体定义函数时的函数体
- 内置函数 range()
- 用于生成一个整数序列
- 创建 range 对象三种方式
- range(stop)
创建一个 [0,stop)之间的整数序列,步长为 1 - range(start,stop)
创建一个 [start,stop)之间的整数序列,步长为 1 - range(start,stop,step)
创建一个 [start,stop)之间的整数序列,步长为 step
- range(stop)
- 返回值是一个迭代器对象
- range 类型的优点
- in与not in 判断整数序列中是否存在(不存在)指定的整数
- 循环结构
- 反复做同一件事情的情况,称为循环
- 循环的分类
- while
- for - in
- 中文语义
in 表达从(字符串、序列等)中以此取值,又称遍历for - in 遍历的对象必须是可迭代对象 - 语法结构
for 自定义的变量 in 可迭代对象 循环体 - 循环体内不需要访问自定义变量,可以将自定义变量代替为下划线
- 中文语义
- 语法结构
while 条件表达式: 条件执行体(循环体) - 选择结构的 if 与循环结构的 while 的区别
1、if 是判断一次,条件为 True 执行一行2、while 是判断 N+1次,条件为 True 执行 N次 - 流程控制语句
- break语句
用于结束循环结构,通常与分支结构 if 一起使用 - continue
用于结束当前循环,进入下一次循环,通常与分支结构中的if 一起使用
- break语句
- 与else语句配合使用的三种情况:
- if ... else ...
if 条件表达式不成立时执行 else - while ... else ...
没有碰到 break 时执行else - for .... else ....
没有碰到 break 时执行else
- if ... else ...
- 嵌套循环
循环结构中又嵌套了另外的完整的循环结构其中内层循环作为外层循环的循环体执行
- 列表
- 列表的创建
- 使用 中括号 [] 创建
列表元素用 逗号 进行分割lst = ['hello','python',111] - 使用内置函数 list()创建
lst = list(['hello','python',111])
- 使用 中括号 [] 创建
- 列表的特点
- 列表元素按顺序有序排列
- 索引映射唯一一个数据
- 列表可以存储重复数据
- 任意数据类型混存
- 根据需要动态分配和回收内存
- 列表的查询操作
- 获取列表中指定元素的索引
- index()
1、例如查询列表中存在N个相同元素,只返回相同元素中的第一个元素的索引2、如果查询的元素在列表中不存在,则会抛出 ValueError 的异常3、还可以在指定的 start 和 stop 之间进行查找,含头不含尾 - 获取列表中的单个元素
- 获取单个元素
1、正向索引从 0 到 N-1 例: lst[0]2、逆向索引从 -N 到 -1 例:lst[-N]3、指定索引不存在,抛出 IndexError 异常 - 获取列表中的多个元素
- 语法格式
列表名 [start : stop : step]- 切片结果
原列表片段的拷贝 - 切片范围
[start,stop) - step 默认为 1
简写为[start : stop] - step 为正数时
从 start 开始向后计算切片[ : stop : step] :切片的第一个元素默认是列表的第一个元素[start : : step] :切片的最后一个元素默认是列表的最后一个元素 - step 为负数时
从start 开始往前计算切片[ : stop : step] :切片的第一个元素默认是列表最后一个元素[start : : step] :切片的最后一个元素默认是列表的第一个元素 - 判断指定元素在列表中是否存在
元素 in 列表名元素 not in 列表名 - 列表元素的遍历
for 迭代变量 in 列表名: 操作
- 切片结果
- 语法格式
- 获取单个元素
- index()
- 获取列表中指定元素的索引
- 列表元素的增加操作
- append()
在列表的末尾添加一个元素 - extend()
在列表的末尾至少添加一个元素 - insert()
在列表的任意位置添加一个元素参数1:添加的位置参数2:添加的元素lst[1:] = 9 #在列表 lst的位置 1 后面添加数字元素 9 - 切片
在列表的任意位置添加至少一个元素参数1:添加的位置参数2:添加的元素lst[1:] = lst1 #在列表 lst的位置 1 后面添加列表 lst1的元素
- append()
- 列表元素的删除操作
- remove()
1、一次删除一个元素2、重复元素只删除第一个3、元素不存在抛出 ValueError 异常例: remove(1) #删除列表中第一个出现的 值为1 的元素,没有就抛异常 - pop()
1、删除一个指定索引位置上的元素2、指定索引不存在抛出 IndexError 异常3、不指定索引,删除列表中的最后一个元素例:pop(1) #删除列表中索引为 1 的元素 - clear()
清空列表 - del
删除列表 - 切片
一次至少删除一个元素,但将产生一个新的列表对象例:new_list = lst[1:3] #将列表中索引 1 之前和3(含3)之后删除lst[1:3] = [] # 将索引1-3(不含3)赋值为空,即删除
- remove()
- 列表元素的修改操作
- 为指定索引的元素赋予一个新值
lst[2] = 100 #将列表索引为 2 的元素的值修改为 100 - 为指定的切片赋予一个新值
lst[1:3] = [300,400,500,600] #在列表的1-3位置的值修改为[300,400,500,600]
- 为指定索引的元素赋予一个新值
- 列表元素的排序操作
- sort()
列表中的所有元素默认按照从小到大的顺序进行排序,可以指定 reverse = True 进行降序排序不产生新的列表,排序改变原列表 - 内置函数 sorted()
可以指定 reverse = True ,进行降序排序,原列表不发生改变,产生新列表
- sort()
- 列表生成式
- 语法格式
[ i * i for i in range( 1,10)]i*i :表示列表元素的表达式i:自定义变量range(1,10):可迭代对象lst = [i for i rang(1,5)] # lst中包含的元素为 [1,2,3,4,5] - 注意事项
表示列表元素的表达式中通常包含自定义变量
- 语法格式
- 列表的创建
- 字典
Python 内置的数据结构之一,与列表一样是一个可变序列以键值对的方式存储数据,字典是一个无序的序列score = {'课程' : python , '姓名' : ‘张三’}score:字典名课程、姓名:键python、张三:值键 :值 元素1,元素2- 字典的创建
- 使用花括号{}
score = {'课程' :‘python’ , ‘李四’:99} - 使用内置函数 dict()
dict(name = ‘jack ’ ,age = 20)
- 使用花括号{}
- 字典中元素的获取
- [] 中括号
score['name'] - get()方法
score.get(‘name’,99) # 获取 key 为name 的值,如果不存在,返回 99 (指定的不存在时默认返回值),如果不指定不存在时返回的默认值 ,则返回 None - [] 取值与使用 get()取值的区别
[ ] 如果字典中不存在指定的 key ,抛出 keyError 异常get()方法取值,如果字典中不存在指定的key,并不会抛异常,而是返回None,可以通过参数设置默认的 value,以便指定 key 不存在时的返回
- [] 中括号
- key 的判断
in :指定的key在字典中存在返回 True not in:指定的 key 不存在返回 True - 字典元素的删除
del score['name'] #删除值 为 name 的 - 字典元素的新增
scores ['name'] = 'python' # 新增 key 为name 值为 python 的元素 - 字典视图的三个方法
- keys()
获取字典中所有 keymykeys = scores.keys() - values()
获取字典中所有 valuemykeys = scores.values() - items()
获取字典中所有的 键值对mykeys = scores.items()
- keys()
- 字典元素的遍历
for item in scores : print( item ) - 字典的特点
- 字典中的所有元素都是一个 key - value对,key 不允许重复,value 可以重复
- 字典中的元素是无序的
- 字典中的 key 必须是不可变对象
- 字典也可以根据需要动态的伸缩
- 字典会浪费较大的内存,是一种使用空间换时间的数据结构
- 字典生成式
- 使用内置函数 zip()
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表items = [‘Fruits’,‘Book’,‘Other’]prices = [90,23,56]d = {item : price for item,price in zip(items,prices)} #将以items中的元素为 key ,以prices 中的元素为 value 对应生成一个 字典
- 使用内置函数 zip()
- 字典的创建
- 元组
Python 内置的数据结构之一,是一个不可变序列- 元组的创建方式
- 直接小括号 ()
t = ('python',‘hello’) - 使用内置函数 tuple()
t = tuple(‘python’,‘hello’) - 只包含一个元组的元素需要使用逗号和小括号
t = (10,)
- 直接小括号 ()
- 元组的遍历
元组是可迭代对象,所以可以使用 for ... in 进行遍历
- 元组的创建方式
- 不可变序列与可变序列
- 不可变序列:字符串、元组
不可改变序列中的元素,一旦改变就产生新对象:没有增删改操作 - 可变序列:列表,字典
可以改变序列的元素:可以增删改操作,对象地址不发生改变,即不产生新对象
- 不可变序列:字符串、元组
- 集合
是Python提供的内置数据结构与列表、字典一样都属于可变类型 的序列集合是没有 value 的字典- 集合的创建
- 使用 花括号创建 {}
s = {2,3,4,5} #集合中的元素不允许重复 - 使用 内置函数set()创建
s = set([1,2,3,4,5]) #其中的 [1,2,3,4,5]可以是 元组、列表、字符串等类型
- 使用 花括号创建 {}
- 集合元素的判断操作
innot in - 集合元素的新增操作
- add()
一次添加一个元素 - update()
至少添加一个元素
- add()
- 集合元素的删除操作
- remove()
一次删除一个指定元素,如果指定的元素不存在抛出 KeyError 异常 - discard()
一次删除一个指定的元素,如果指定的元素不存在,不抛出异常 - pop()
一次只删除一个任意的元素 - clear()
清空集合
- remove()
- 集合间的关系
- 俩个集合是否相等
可以使用运算符 == 或 != 进行判断 - 一个集合是否是另一个集合的子集
可以调用方法 issubset 进行判断B.issubset (A) #B是不是A的子集 - 一个集合是否是另一个集合的超集
可以调用方法 issuperset 进行判断B.issuperset (A) #B是不是A的子超集 - 俩个集合是否没有交集
可以调用方法 isdisjoint 进行判断B.isdisjoint (A) #A B是否有交集
- 俩个集合是否相等
- 集合的生成式
{ i*i for i in range(1,10) }
- 集合的创建