python基础(上)
2020-11-15 20:23:34 0 举报
AI智能生成
python语法基础 上
作者其他创作
大纲/内容
流程控制
代码块
代码块
冒号开始,缩进划分作用域
作用域
代码块的作用范围
缩进
要统一,不能\t + 空格
流程控制
分支结构
单分支
双分支
多分支(多选一)
巢状分支
循环结构
意义
减少冗余代码,提升执行效率
while循环
语法
死循环
单循环
经典示例1:打印小星星
i%n 获得n个数的循环
代码功能模块化,便于维护
经典示例2:求吉利数字
// 可以获取一个数的高位数字
% 可以获取一个数的低位数字
双循环
经典示例1:打印小星星
经典示例2:打印99乘法表
多循环
经典示例:百钱买百鸡
穷举法:条件比未知数少,可以循环穷举所有情况
for循环
语法
功能
主要用于遍历/循环/迭代
使用对象
Iterable 可迭代对象
range对象
for ... else
使for循环有了分支
常用的关键字
pass
占位用,使语句完整
break
终止当前循环
continue
跳过当前循环,从下一次循环开始
两种循环比较
while 一般用于处理复杂的逻辑关系,且可以写死循环
for 一般用于遍历数据,底层自带__next()__方法,代码更简洁
文件操作和函数
文件操作
一般语法
打开->写入->关闭
fp = open("test.txt", "r"),fp是迭代器
文件存储
二进制字节流
传输或存储数据的一种格式
encode() 编码
decode() 解码
utf-8下 一个中文3个字节 一个英文1字节
写入二进制字节流
指定模式wb,不要指定encoding编码集,否则报错
读取二进制字节流
指定模式rb,不要指定encoding编码集,否则报错
复制文件
所有图片音频视频都需要通过二进制字节流来存储传输
文件操作的扩展模式
r+
可读可写,指针往右移动,写入覆盖
w+
可读可写,清空重写,文件不存在则创建新的文件
a+
可读可写,追加写入,文件不存在创建新的文件,推荐使用
刷新缓冲区
flush()
手动刷新缓冲区,写入
with语法
with open(filename, mode, encoding) as f:
自动实现文件关闭操作
相关函数
read()
读取指定的字节/字符数,默认读全部,从当前往右
seek()
调整指针的位置,参数可传字节个数
seek(0) 把光标移动到0字节位置
seek(0, 2) 把指针移动到IO对象末尾
使用seek可能移到二进制字节中间,插入新字节会导致无法解码
tell()
返回指针左侧所有的字节数
readable()
判断文件对象是否可读
print(fp.readable())
writable()
判断文件对象是否可写
print(fp.writable())
readline()
读取一行文件内容
res = fp.readline()
readlines()
将文件中的内容按照换行读取到列表当中
lst = f.readlines()
writelines()
将内容是字符串的可迭代数据写入文件中
f.writelines(lst)
truncate()
截取原文件的字符串,然后清空文件再将提取的字符串写入
f.truncate(3),3字节
数据操作和函数
字符串
相关操作
拼接
+
重复
*
跨行拼接
\
索引
从左以0开始,从右以-1开始
切片
语法 => 字符串[::]
完整格式:[开始索引:结束索引:间隔值]
[开始索引:]
从开始索引截取到最后
[:结束索引]
从开头截取到结束索引之前(结束索引-1)
[开始索引:结束索引]
从开始索引截取到结束索引之前(结束索引-1)
[开始索引:结束索引:间隔值]
从开始索引截取到结束索引之前按指定步长截取,默认间隔是1
[:]或[::]
截取所有字符串
格式化format
顺序传参
{}中不传参数,元组中元素按顺序传入字符串
索引传参
{}中传入元组下标
关键字传参
元组中元素带名称,{}中传名称关键字
容器类型数据(列表或元祖)传参
注意一:如果该容器是字典,通过key取值时,不需要加引号
注意二:通过索引取值时,不能使用负号
填充符号的使用
{name:*^10}
进制转换等特殊符号的使用
:d :3d :f :2f :s :,
相关函数
一般常见
capitalize
首字母大写
strvar.capitalize()
title
全部单词首字母大写
strvar.title()
upper
全部字母大写
strvar.upper()
lower
全部字母小写
strvar.lower()
swapcase
大小写互换
strvar.swapcase()
len
获取字符串长度
len(strvar)
count
获取某个元素的数量
strvar.count(字符,开始值,结束值)
find
获取某个元素第一次出现的位置
strvar.find(字符,开始值,结束值),从左到右
如果返回的是-1,代表没有找到
index
与find功能相同,但找不到该元素报错
strvar.index(str)
startswith
判断是否以某个元素为开头
strvar.startswith(字符,开始值,结束值)
endswith
判断是否以某个元素为结尾
strvar.endswith(字符,开始值,结束值)
split
按某字符将字符串分割成列表,默认空格
strvar.split()
join
按某字符将列表或其他容器型数据拼接成字符串
strvar = " ".join(lst)
replace
把字符串的旧字符换成新字符
strvar.replace("旧字符", "新字符" [,限制替换的次数])
strip
移除字符串头尾指定字符,默认空格或换行
strvar.replace("a","b")
center
填充字符串,原字符居中,默认空格
strvar.enter(字符长度, 填充符号)
is系列
isupper
判断是否都是大写字母
strvar.isupper()
islower
判断是否都是小写字母
strvar.islower()
isdecimal
判断是否是纯数字
strvar.isdecimal()
isdigit
同isdecimal, 还支持byte型数字判断
isalpha
判断是否为字母, 中文也是True, 可以先encode再判断
isalnum
判断是否为字母和数字
列表
相关操作
拼接 + (同元组)
重复 * (同元组)
切片 (同元组)
获取,通过下标 (同元组)
列表的修改 ( 可切片 )
lst[1] = "b"
改多个值要求赋的新值必须Iterable
列表的删除 ( 可切片 )
del lst[1:-1]
相关函数
增
append
末尾添加新的元素
lst.append("B")
insert
指定索引之前插入元素
lst.insert(0,"C")
extend
迭代追加Iterable的所有元素
lst.extend(strvar)
删
pop
指定索引弹出元素,默认从最后删
res = lst.pop()
remove
删除指定元素,遇到多个则默认删第一个
lst.remove("B")
clear
清空列表
其他
index
获取某个值的索引
lst.index("C")
count
获取某个元素个数
res = lst.count("C")
sort
排序
lst.sort()
reverse
翻转列表
lst.reverse()
深拷贝和浅拷贝
浅拷贝
只拷贝一级容器中的所有元素,在新的空间中存储
lst2 = copy.copy(lst1)
深拷贝
把所有层级容器中的所有元素都单独拷贝一份,在新的空间中存储
lst2 = copy.deepcopy(lst1)
元组
相关操作同列表,不过不能修改和删除
相关函数只有count和index,用法同列表
集合
相关操作
intersection()
交集 &
set1.intersection(set2)
set1 & set2
difference()
差集 -
set1.difference(set2)
set1 - set2
union()
并集 |
set1.union(set2)
set1 | set2
symmetric_difference()
对称差集(包含补集) ^
set1.symmetric_difference(set2)
set1 ^ set2
issubset()
判断是否是子集 <
set2.issubset(set1)
set2 < set1
issuperset()
判断是否是父集 >
set1.issuperset(set2)
set1 > set2
isdisjoint()
判断是否不相交 ,不相交True,相交False
set1.isdisjoint(set2)
相关函数
增
add()
添加数据,一次加一个
set1.add{"mm"}
update()
迭代添加,自动去重,一次加一堆
set1.update(lst)
删
pop()
随机弹出一个数据
set.pop()
discard()
删除指定的值,不存在不报错
set.discard("lm")
remove()
删除指定的值,不存在则报错
set.remove("lm")
clear()
清空集合
其他
frozenset()
转容器为冰冻集合,只能做交差并补操作,不再能修改
fz1 = frozenset(lst)
字典
增
普通方法(推荐)
同字典的修改
fromkeys()
使用一组键和默认值创建字典
删
pop()
通过键去弹出键值对 ,若没有该键可设置默认值,预防报错
popitem()
弹出最后一个键值对
clear()
清空字典
改
update()
批量更新,有该键就更新,没该键就添加
查
get()
通过键获取值,若没有该键可设置默认值,提醒没有
其他
keys()
将字典的键组成新的可迭代对象
values()
将字典的值组成新的可迭代对象
items()
将字典的键值对凑成元组对,组成新的可迭代对象
获取键值对,即获取了映射关系,应用较多
运算符
算数运算符
+
-
*
/
结果的精度至少是float型
//
地板除(商向下取整)
%
取余
**(幂)
位运算符
&
按位与
|
按位或
^
按位异或
~
按位非,运算结果为 -(n+1)
<<
左移,运算结果为m乘以2的n次幂
>>
右移,运算结果为m除以2的n次幂
比较运算符
<, >, <=, <=, ==, !=,返回True或False
身份运算符
is和is not,判断两个数是否是同一个,检测内存位置
成员运算符
in和not in,只用于容器型数据,返回True或False
字典判断的是key而不是value
逻辑运算符
and
逻辑与,全真才真,一假则假
or
逻辑或,一真则真,全假才假
not
逻辑短路
True or...直接True,False and...直接False
赋值运算符
=,+=,-=...
运算符优先级
总优先级
算位比身成逻
一元运算符 > 二元运算符
同一类运算符
算数运算符:乘除 > 加减
位运算符:(<< >>)> & > ^ > |
逻辑运算符:() > not > and > or
个别运算符
运算符优先级最高的:**
运算符优先级最低的:=
()可以提升优先级,也可以使运算便于观看
数据类型转换
Number类型 强制转换
int() 转换为整数,向下取整
可强转int,float,bool,纯数字字符串
float() 转换为小数
int,float,bool,纯数字字符串
complex() 转换为复数
int,float,bool,纯数字字符串,complex
bool() 变成布尔型
所有数据类型,除了下面十种,结果都为True
0, 0.0, 0j, False, " ", [ ], ( ), set(), {}, None
Number类型 自动转换
低精度数据默认向高精度转换
bool -> int -> float -> complex
小数有精度损耗,一般后面有15~18位,并不精确
0.1 + 0.2 != 0.3
容器类型 强制转换
str()
强转成字符串,所有数据类型,两边套上引号
list()、tuple()、set()
强制转换成相对应的类型,且规则相似
dict()
多级容器
容器里面套容器
等长容器
同一级容器里面的的元素个数相等
两个必要条件:内层是2个元素的等长二级容器,里层不为字典、集合
对象类型判断
type()
isinstance(object, classinfo)
数据类型
Number 数字型数据
int 整型
二进制表示
intvar = 0b110
八进制表示
intvar = 0o127
十六进制表示
intvar = 0xff
intvar = 0XFF
查看类型
type() 获取值的类型
查看地址
id() 获取值的地址
float 浮点型
表达方式1:1.23
表达方式2:科学计数法 :5.7e5,小数点右移5
bool 布尔型
True 真的,False 假的
complex 复数
表达方式1:3 + 4j
表达方式2:complex(实数,虚数) => 复数
容器型数据
str 字符串
概念
用引号引起来的就是字符串,单引号,双引号,三引号(可以支持跨行效果)
转义字符\
格式:\ + 字符
元字符串
格式:r"字符串" ,功能:原型化输出字符串
字符串格式化表示
%d %f %s
format
特征
可获取,不可修改,有序
list 列表
特征
可获取,可修改,有序
tuple 元组
特征
可获取,不可修改,有序
set 集合
特征
无序,自动去重
dict 字典
特征
键值对,表面有序,本质无序
哈希算法
定义
把分布密集的值映射为较平均的值,这种算法为哈希算法
特点
哈希值固定且唯一,映射过程不可逆
意义
提升存储分配效率,减少哈希碰撞,确保数据唯一
字典与集合相关
字典的键,集合的值都必须是可哈希数据
数据在内存中的缓存机制
同一文件
变量缓存机制
不同文件
小数据池驻留机制
意义
节省内存空间,提升代码效率
基础认知
计算机认知
文件大小单位
bit和byte区分
进制转换
常见进制
其他进制转为十进制
十进制转为其他进制
其他进制互转
原码,反码,补码
概念
符号位
最高位,1表示-,0表示正
运算顺序
python认知
简介
89年,龟叔,第三方库,自动化,AI,爬虫,web全栈
版本
2.0和3.0区别
解释型语言
代码从上到下一行一行解释并运行
解释器
Cpython
pycharm
常用快捷键
注释
分类
单行注释,多行注释
注意点
外面使用三个单引号,里面就要用三个双引号,反之亦然
排错性
可以注释掉不要执行的代码,来debug
变量认知
概念
可以改变的量就是变量,具体指代的是内存的一块空间
常量就是不可改变的量,python当中没有明确定义常量的关键字,
所以约定俗成把变量名大写就是常量,表示不可改变
声明方式
命名规范
交换
a,b = b,a,python独有
六大标准数据类型
数据类型
int, float, complex, bool, str, list, tuple, set, dict
自动类型转换
默认向更高精度转换
强制类型转换
使用内置强转函数
哈希算法
可哈希的数据 (不可变的数据):Number str tuple
不可哈希的数据 (可变的数据): list set dict
运算符
算数运算符: + - * / // % **
比较运算符: > < >= <= == !=
赋值运算符: = += -= *= /= //= %= **=
成员运算符: in 和 not in (针对于容器型数据)
身份运算符: is 和 is not (检测是否为内存中的同一个)
逻辑运算符: and or not
位运算符: & | ~ ^ << >>
0 条评论
下一页