python
python
1 | # __name__是Python 的一个内置变量 |
简单知识
python中,main()只是起到提示作用,无实质约束力,代码依旧从上向下读取
lambda少使用,易造成错误
..双点表示父目录(上一级目录),.单点表示当前工作目录(current directory)
内置函数enumerate用于遍历可迭代对象(如列表、元组、迭代器)的同时,获取元素的索引和值
深度学习里常用于遍历DataLoader:
for batch_idx, (inputs, targets) in enumerate(train_loader):
ps:batch_idx是当前批次编号,inputs,targets是当前批次的数据
Python图像库中最重要的类是Image类,要从文件加载图像,使用Image模块的open()功能:
from PIL import Image
img = Image.open(“hopper.ppm”)
img.show() //显示刚刚加载的图像
命名规则_xxx表示内部使用,不直接给外部调用
[]+[]是创建一个新的列表(list),把两个列表的内容拼接在一起
插在原数组后面要用.extend(修改数组本身[1,2,3,4])或.append(把数组作为元素插入,属于嵌套数组[1,2,[3,4]])。
lstrip()移除字符串开头指定字符,rstrip()移除字符串末尾指定字符,strip()同时移除开头和末尾指定字符。不指定参数默认移除空白字符
原理(例如lstrip):从字符串最左侧开始,逐字符检查是否出现在参数中,连续移除所有匹配的字符,直到遇到第一个不匹配的字符
isdigit()检查字符串是否只包含数字字符,isalpha()检查字符串是否只包含字母字符
reverse()直接修改原列表,不返回任何值(返回None)。字符串不可变,不能使用reverse()
join()将序列中的元素连接成一个字符串,常用’’.join()拼接字符串
upper()转换为大写,lower()转换为小写,title()每个单词首字母大写,swapcase()互换大小写,capitalize()字符串首字母大写,其余小写
内置函数map()为序列中每个元素应用一个函数
and or 而不是 && ||✌
python支持链式比较(语法糖),如1<=n<=10,实质是1<=n and n<=10
集合中True数值上等于1,但作为不同的值存储。集合是无序的,可以包含混合数据类型,集合操作会自动去重
u|v(等价方法形式u.union(v))并集,u&v(u.intersection(v))交集,u-v(u.difference(v))差集,从u中移除v中的元素,u^v(u.symmetric_difference(v))对称差集,只属于一个集合的元素
内置函数eval()将字符串当作Python代码执行,由于其危险性很少使用
字典方法.get()用于安全地获取字典中的值。键存在则返回对应的值,键不存在则返回指定的默认值(而不是报错)。
字典可以={}创立,赋初值时字符串要加引号
epoch_loss=np.mean(losses) if losses else float(‘nan’)
在有损失值时计算平均损失,没有时返回NaN(Not a Number)以避免报错
装饰器(decorator)@staticmethod用于定义静态方法(static method)。表示以下方法属于类本身,而不是类的实例,不需要访问实例(self)或类(cls),就能被调用
内置函数isinstance()判断一个对象是否是指定类型(或其子类)的实例。isinstance(object,classinfo),object:要检查的对象,classinfo:可以是一个类型(例如int、list),也可以是一个类型元组(例如(int,float)),如果变量是这个类型则返回True,不是则返回False
Python列表支持布尔判断,原生容器判断真假不管元素内容,只管有没有元素
arr = []
if not arr:
print(“空”)
else:
print(“非空”)
hstack():水平堆叠,vstack():垂直堆叠,堆叠数组需要在一个序列(列表或元组)中传递。如hstack((arr1,arr2))或hstack([arr1,arr2])
Python中单引号’和双引号”的本质等价,在字符串中包含引号时使用对方引号更方便
CSV是逗号分隔值文件(Comma-Separated Values),纯文本,用于存储表格数据
jupyter
jupyter横着排在最上面的是列(columns),竖着往下排的是行(index)
1 | df单独位于单元格最后一行,会自动以表格形式显示 |
正则表达式
从左到右记下连续匹配成功的子串,只匹配连续的一整段字符串
1 | ( 开始捕获 |
| 类别 | 写法 | 含义 | 关键说明 |
|---|---|---|---|
| 字面字符 | a |
匹配字符a | 大小写敏感 |
| 任意字符 | . |
匹配任意单个字符 | 默认不含换行 |
| 字符集合 | [abc] |
匹配a/b/c中任意一个 | 只匹配1个字符 |
| 字符范围 | [a-z] |
匹配a到z | 可组合使用 |
| 否定集合 | [^abc] |
匹配非a/b/c的字符 | ^仅在集合内取反 |
| 数字 | \d |
匹配数字 | 等价[0-9] |
| 非数字 | \D |
匹配非数字 | |
| 空白 | \s |
匹配任意空白字符 | 含空格、换行、Tab |
| 非空白 | \S |
匹配非空白字符 | |
| 单词字符 | \w |
匹配字母/数字/下划线 | |
| 非单词字符 | \W |
匹配非单词字符 | |
| 捕获组 | (abc) |
捕获abc | 可通过索引引用 |
| 非捕获组 | (?:abc) |
分组但不捕获 | 提升性能 |
| 行首 | ^ |
匹配字符串开始 | 多行模式行为不同 |
| 行尾 | $ |
匹配字符串结束 | |
| 量词 | * |
0次或多次 | 贪婪 |
| 量词 | + |
1次或多次 | 贪婪 |
| 量词 | ? |
0或1次 | 可选 |
| 区间量词 | {m,n} |
m到n次 | 默认贪婪 |
| 非贪婪修饰 | *?+???{m,n}? |
最小匹配 | 改变搜索策略 |
| 反向引用 | \1 |
引用第1个捕获组 | 依赖捕获顺序 |
| 单词边界 | \b |
单词边界 | 不消耗字符 |
| 非边界 | \B |
非单词边界 | |
| 转义 | \. |
匹配字面. |
取消特殊含义 |
库
import os //创建文件夹、路径拼接
import time //计算运行时间
import random //导入Python标准库的随机模块,用于random.sample、random.sample等随机选择
import numpy as np //Numpy库(conda install numpy)
import cv2 //OpenCV库(conda install opencv)
import matplotlib.pyplot as plt //画图(conda install matplotlib)
import requests //发送HTTP请求,访问网页和接口的工具(conda install requests)
import pandas as pd //数据处理与数据分析(conda install pandas)
