导图社区 python编程语言
整理了字符串 str、列表 list元组 tuple集合 set、字典 dic、文件等。考研中,目前暂停更新。
编辑于2024-03-29 17:34:46
重编码 bytes 解决字符因编码方式不同而出现的乱码问题
str.encode(编码方式)
#编码,返回值类型为bytes
bytes = b'xxxx'
b'\xb3\xcc\xbd\xdc'
#\x:一个字节
decode(编码方式)
#解码
字典 dic
字典:以键值对的方式存储数据 key必须是可哈希的数据类型
dic = {key1: value1, key2: value2}
dic = dic()
dic = {1: ['chengJie', 'zhuLuLu', 'zhuXiangXiang'], 'First': ['第一'], ('chengJie', 'zhuLuLu', 'zhuXiangXiang'): 1}
cheng_jie = { "name": "程杰", "age": 25, "助理": [{ "name": "承接", "age": 20 }, { "name": "艾琳", "age": 18 }, { "name": "艾利息", "age": 19 }] }
dic[1] = "tom"
key重复会将value覆盖,相当于修改
get()/dic[1]
setdefault(key,value)
#设置默认值,如果key存在则不起作用
pop(key)
#根据key删除
增删改查
keys()
#拿到所有的key
values()
#拿到所有的value
items()
#拿到所有的key value,得到的属于元组
循环字典删除会报错,需准备
temp = []
列表 list 元组 tuple 集合 set
list
list = [1,2,3,4,5]
特性: 1. 像字符串一样有索引和切片 2. 索引超出范围会报错 3. 可以用for循环遍历
索引和切片
lst[3]
从0开始,倒着数从-1开始
lst[:3]
[start,end) 从左往右切
lst[::-1]
步长 -从右往左
增删改查
append(数据)
尾部追加
insert(索引位置,数据)
增
pop(索引)
删除,返回删除的元素
remove(数据)
删除某个元素
删
改查,直接用索引就可以完成,查亦可使用遍历
排序
列表初始按照存放数据保存
sort(reverse=True/False)
列表的嵌套
lst[1][0][2]
列表的循环删除
直接删除操作会出现删不干净的情况
安全稳妥的循环删除方式: 将要删除的内容保存在新列表中,驯化新列表删除老列表
tuple
tuple = (1,2,3,4,5)
tuple = tuple()
不能增删改
可查询
解构: 变量数与数据量一致
a,b = (1,2)
a,b = b,a
互换
set
无序,不可重复,存储的数据可哈希
add(数据)
pop()
随便删一个
remove(数据)
修改需要先删掉再添加
交集 & intersection 并集 | union 差集 - difference
list(set(list))
可通过转化去除列表中的重复
字符串 str
格式化: 字符串插入变量
"占位符"%(占位变量名)
占位符: %s 字符串占位 %d 整数占位 %f 小数占位
"请输入姓名:{}".format(变量)
f"请输入姓名:{变量名}"
f-string
索引和切片
str[3]
从0开始,倒着数从-1开始
str[:3]
[start,end) 从左往右切
str[::-1]
步长 -从右往左
大小写转换
capitalize()
title()
首字母大写
lower()
所有字母小写
upper()
所有字母大写
替换、切割和组合
strip()
去掉左右空白符(空格,\t,\n)
replace(old,new)
split(用什么切割)
join(list)
将列表用该字符串组合
查找和判断
find()
返回-1表示无
index()
找不到报错
in/not in
startswith()/endswith()
len()
字符串长度
isdigit()
是否整数
空白符
\n 换行符
2. 基础知识
注释 快捷键:Ctrl+/
# 单行注释 '''多行注释''' """多行注释"""
变量 数据类型
变量
变量:指向一个内存空间,区分不同数据。 变量名命名规范: 1. 字母、数字、下划线组成 2. 不能数字开头 3. 不能用关键字 4. 不要太长,不要中文 6. 要有意义 7. 推荐下划线命名和驼峰命名 例如:cheng_jie、chengJie 8. 常量字母大写(python 无绝对常量)
cheng_jie = "chengJie"
数据类型(区分不同的数据):
type():查看数据类型
int float bool
int 整数
1
float 浮点数
计算机表示小数有误差
1.0
bool 布尔值
0是false,空字符串是false 即,表示空的都是false
true flase
str
字符串 '1' "2" '''3''' 三引号
操作(不同数据类型之间无法连接) + 字符串连接操作,加法 * 字符串重复,乘法
原字符串不会产生影响
list
列表:用于存储大量数据,数据类型无限制
[1,2,3]
tuple
元组,不可变列表
只有一个元素,需要在末尾添加个逗号、
内存地址不能变
(1,2.3)
set
集合,无序不可重复,数据要求可以进行哈希计算(不可变的数据类型可哈希,int、float、bool、str、tuple )
无索引,无切片
{1,2,3}
set()
空集合,直接{}属于字典这一数据类型
set[0]
dict
字典:以键值对的方式存储数据
{key1:value1, key2:value2}
dict[key]
bytes
None
空,什么都不是 应对字典中什么都没有的情况
类型转换 str = str(int)
关键字 运算符
关键字
if 条件: 代码块 elif 条件: 代码块 else: 代码块
条件判断if语句 1. 可以只有if 2. 可嵌套
代码块四格(Tab)缩进 条件满足则执行代码
while 条件: 代码块
多用于死循环
for 变量 in 可迭代的数据: 代码块
多用
循化索引
循环元素
break
结束循环
continue
结束本次循环代码
循环语句
pass
空代码块占位
运算符
算数运算
+ - * / % // **(次幂)
比较运算
> >= < <= == !=
赋值运算
= += -= ...
a=a+b a += b
逻辑运算
not and or
按优先级排序
成员运算
in
函数
print()
打印结果
input()
输入(默认为字符串类型)
range()
索引排序
类
文件和异常
测试代码
1. 起步
特征
面向对象的高级解释语言。 简洁开源,上手轻松。可跨平台。 在web开发、大数据、人工智能、自动化等方向有完整的框架
运行速度慢,中文资料匮乏
解释器: 将代码转换为机器语言的程序
版本
python 3
python3.12.0
根据你的操作系统,在python官网下载解释器安装包
记得将安装路径添加到环境变量
交互方式: 一问一答
python shell
IDLE
文件方式
记事本
python项目
.py
python文件
执行
python python文件
IDE: 集成开发环境,编写代码
vscode 小 jupyter notebook 分步执行程序
sublime
pycharm
JetBrains公司官网下载集成开发环境,可跨平台
专业版功能强大,可破解
文件
1.得到文件
file = open(文件路径, mode="", encode="")
相对路径(使用更频繁)
同文件夹内的文件可直接可以找到
返回上一次文件夹
../
file.close() #结束后记得关闭文件
with open(文件路径, mode="", encode="") as file1, \ open(文件路径, mode="", encode="") as file2: #文件操作完成后自动关闭,\表示一行
读取文件
read() 全部读取 readline() 逐行读取 readlines() 全部读取后放入列表 for line in file: print(line.strip())
写入文件
write()
文件修改 (删除原文件,将副本文件重命名为原文件名)
# 4.文件修改 import os with open("试一试.txt", mode="r", encoding="utf-8") as file1, \ open("试一试-副本.txt", mode="w", encoding="utf-8") as file2: for line in file1: line = line.strip().replace("你", "你(you)") print(line) file2.write(line) file2.write("\n") os.remove("试一试.txt") os.rename("试一试-副本.txt", "试一试.txt")
3. 函数编程 函数:对特定的代码块(功能)进行分装,使其可以通过定义的函数直接调用。
定义函数
def 函数名(参数, 参数=默认值): 函数体
def print(self, *args, sep=' ', end='\n', file=None): pass
参数: 函数调用时为函数传递信息。
形参: 接收信息的变量
1. 位置参数,按照位置声明变量。 2. 默认值参数,函数声明时给变量一个默认值,如果实参不传递信息则生效。 位置参数 > 默认值参数 3. 动态参数 *args,接收所有位置参数的动态传参,并将数据传到元组中。 **kwargs ,接收所有关键字参数的动态传参,并将数据传到字典中。 位置参数 > *args > 默认值参数 > **kwargs
实参: 实际调用的时候实际传递的信息,若非相应的动态参数调用时必须保证形参有数据。
1. 位置参数,按照位置进行传参。 2. 关键字参数,根据变量名传参。 3. 混合参数,位置参数放前面,关键词参数放后面。 * 打散列表 ** 打散字典
返回值
return
1. 只写return,返回None 2. return 值 3. return 值1, 值2,...
调用函数
函数名(参数, 参数)
print("程杰", "cj", sep="|")
函数编程应用
函数嵌套
1. 函数可以作为返回值返回 2. 函数可以作为参数进行传递 3. 函数名实际上就是一个变量名,都表示一个内存地址,可进行赋值。
作用域(全局变量、局部变量)
函数可以修改全局变量
def func(): a = 12 def inner(): nonlocal a a += 1 return a return inner ret = func() print(ret) va = ret() print(va)
闭包:本质上是内层函数对外层函数局部变量的使用,此时内层函数被称为闭包函数。 1. 可以让一个变量常驻于内存。 2. 可以避免局部变量被修改。
def wrapper(tar): def inner(*args, **kwargs): # 前功能 print("前功能") ret = tar(*args, **kwargs) # 后功能 print("后功能") return ret return inner @wrapper # 相当于 target = wrapper(target) def target(): print("原本功能") target()
装饰器:本质上就是闭包,在不改变原有函数调用的情况下,给函数的前后增加新功能。 参数问题? 返回值问题? 多装饰器问题,距离函数近的修饰器先修饰。
迭代器(iterator)
可以从可迭代(iterable)的数据中逐一拿到单个数据 featrue: 1. 迭代器本身可迭代 2. 只能向前不能反复 3. 节省内存 4. 惰性机制()
获取迭代器
iter(数据)
数据.__iter__()
从迭代器中拿到数据
next(迭代器)
迭代器.__next__()
ite = list.__iter__() while 1: try: ite.__next__() except StopIteration break
for item in list: 循环体
for循环的实现原理
生成器(generator) 本质就是迭代器,一次性使用
1 生成器函数
yield
作用: 可以返回数据(生成器) 分段执行函数中的内容,利用__next__()可执行到下一个yield的位置 优势: 节省内存
def order(): lst = [] for i in range(1000): lst.append(f"衣服{i}") if len(lst) == 50: yield lst lst = [] gen = order() data = gen.__next__() print(data) data = gen.__next__() print(data) data = gen.__next__() print(data)
2 生成器表达式
推导式: 简化代码 分为列表推导式、集合推导式{数据 for循环 if判断}、字典推导式{k:v for循环 if判断} 注意不要将其妖魔化,如嵌套过多
[数据 for循环 if判断]
lst = [] for i in range(10): lst.append(i)
lst = [i for i in range(10) if i % 2 == 0] print(lst)
(数据 for循环 if判断)
匿名函数(无函数名) lambda表达式
lambda 参数: 返回值
python内置函数
基本数据类型相关(38)
数字相关(14)
数字
进制转换
运算
数据结构相关(24)
反射相关(4)
作用域相关(2)
面向对象相关(9)
迭代器/生成器相关(3)
其他(12)
模块引入 import 模块
额外加载包
requests
内置包
time和datetime 与时间相关
sleep(休眠时间.s)
os和sys 操作系统相关
remove("文件名")
删除文件
rename("文件名", "文件名")
文件重命名
Web开发库
数据分析
数据获取与处理
爬虫
视频爬取
探索分析与可视化
模型评估
分析建模
预处理理论
机器学习
主题
主题
生信库
主题
主题
不知道怎么学?
github开源示例项目
以下是一些常见 Python 库的官方文档链接: 1. Pandas:https://pandas.pydata.org/docs/ 2. NumPy:https://numpy.org/doc/ 3. Matplotlib:https://matplotlib.org/3.5.2/users_guide/ 4. Scikit-learn:https://scikit-learn.org/stable/ 5. TensorFlow:https://www.tensorflow.org/ 6. PyTorch:https://pytorch.org/ 7. Flask:https://flask.palletsprojects.com/en/2.2.x/ 8. BeautifulSoup:https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 9. os:https://docs.python.org/3/library/os.html 10. sys:https://docs.python.org/3/library/sys.html 11. datetime:https://docs.python.org/3/library/datetime.html
在线教程 Bilibili