# Python笔记 **Repository Path**: eirrrrl/python-notes ## Basic Information - **Project Name**: Python笔记 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-15 - **Last Updated**: 2026-01-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 上传仓库 ## 生成认证密钥 - 打开cmd,输入下面的命令生成证书 ```py ssh-keygen -t rsa -C "2160392064@qq.com" ``` ## 创建仓库 - 在 gitee 上创建仓库 - 创建好后,有一些命令 - 到笔记所在的文件夹当中 ```py git config --global user.name "eirl" git config --global user.email"16407415+eirrrrl@user.noreply.gitee.com" git init git add * git commit -m "第一次上传笔记" git remote add origin https://gitee.com/eirrrrl/python-notes.git git push -u origin "master" ``` # Python 基础 ### 元祖 tuple 元组被称为只读列表,即数据可以被查询,但不能被修改。 ### 列表 list 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32 位 python 的限制是 536870912 个元素,64 位 python 的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。 #### 增 ```python li = [1,'a',2,'d',4] li.insert(0,22) # 按照索引去增加 print(li) li.append('ddd') # 增加到最后 print(li) li.extend(['q,a,w']) # 迭代的去增 print(li) li.extend(['q,a,w','das']) # 迭代的去增 print(li) ``` 运行结果 ```text [22, 1, 'a', 2, 'd', 4] [22, 1, 'a', 2, 'd', 4, 'ddd'] [22, 1, 'a', 2, 'd', 4, 'ddd', 'q,a,w'] [22, 1, 'a', 2, 'd', 4, 'ddd', 'q,a,w', 'q,a,w', 'das'] ``` #### 删 ```python li = [1,'a',2,'d',4,5,'f'] a = li.pop(1) # 按照位置去删除,有返回值 print(a) del li[1:3] # 按照位置去删除,也可切片删除没有返回值。 print(li) li.remove('f') print(li) li.clear() print(li) ``` 运行结果 ```text a [1, 4, 5, 'f'] [1, 4, 5] [] ``` #### 改 ```python li = [1,'a',2,'d',4,5,'f'] li[1] = 'aaa' print(li) li[2:3] = [3,'e'] print (li) ``` 运行结果 ```text [1, 'aaa', 2, 'd', 4, 5, 'f'] [1, 'aaa', 3, 'e', 'd', 4, 5, 'f'] ``` #### 查 ```python dic = {"age":18, "name":"aaron", 'sex':'male'} value = dic['name'] ## 没有会报错 print(value) value = dic.get('abc','查无此项') print(value) ``` ### 字典dict 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。 #### 增 ```python dic = {"age":18, "name":"aaron"} dic['li'] = ["a","b","c"] print(dic) dic.setdefault('k','v') ## 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。 print(dic) dic.setdefault('k','v1') print(dic) ``` #### 删 ```python dic = {"age":18, "name":"aaron"} dic_pop = dic.pop('age') ## pop根据key删除键值对,并返回对应的值,如果没有key则返回默认返回值 print(dic_pop) dic_pop = dic.pop('sex','查无此项') print(dic_pop) dic['age'] = 18 print(dic) del dic['name'] print(dic) dic['name'] = 'demo' dic_pop = dic.popitem() ## 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回 print(dic_pop) dic_clear = dic.clear() ## 清空字典 print(dic,dic_clear) ``` #### 改 ```python dic = {"age":18, "name":"aaron", 'sex':'male'} dic2 = {"age":30, "name":'demo'} dic2.update(dic) ## 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中 print(dic2) dic2['age'] = 30 print(dic2) ``` #### 查 ```python dic = {"age":18, "name":"aaron", 'sex':'male'} value = dic['name'] ## 没有会报错 print(value) value = dic.get('abc','查无此项') print(value) ``` ### 集合set 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点: - 去重,把一个列表变成集合,就自动去重了。 - 关系测试,测试两组数据之前的交集、差集、并集等关系。 #### 创建集合 ```python set1 = set({1,2,'barry'}) set2 = {1,2,'barry'} print(set1,set2) ``` #### 集合的增 ```python set1 = {'abc','def',123,'asdas'} set1.add('qwer') print(set1) set1.update('A') #update:迭代着增加 print(set1) set1.update('哈哈哈') print(set1) set1.update([1,2,3]) print(set1) ``` #### 集合的删 ```python set1 = {'abc','def',123,'asdas'} set1.remove('abc') print(set1) set1.pop() ## 随机删除一个数 print(set1) set1.clear() ## 清空合集 print(set1) del set1 ## 删除合集 print(set1) ``` #### 集合的其他操作 ###### 交集(& 或者 intersection) ```python set1 = {1,2,3,4,5} set2 = {3,4,5,6,7} print(set1 & set2) print(set1.intersection(set2)) ## 列出两个集合中共同拥有的项 ``` ##### 并集(|或者 union) ```python set1 = {1,2,3,4,5} set2 = {3,4,5,6,7} print(set1 | set2) print(set2.union(set1)) ## 列出两个集合中所有的项 ``` ##### 差集(- 或者 difference) ```python set1 = {1,2,3,4,5} set2 = {3,4,5,6,7} print(set1 - set2) print(set1.difference(set2)) ## 在set1中删除set2中有的项 ``` ##### 反交集 (^ 或者 symmetric_difference) ```python set1 = {1,2,3,4,5} set2 = {3,4,5,6,7} print(set1 ^ set2) print(set1.symmetric_difference(set2)) ## 显示set1和set2不共存的项 ``` ##### 子集与超集 ```python set1 = {1,2,3} set2 = {1,2,3,4,5,6} print(set1 < set2) print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 print(set2 > set1) print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集 ``` ##### frozenset不可变集合,让集合变成不可变类型 ```python set1 = {1,2,3,4,5,6} s = frozenset(set1) print(s,type(s)) s.add(7) # 不可以修改,会报错 ``` # ✅ 常用正则表达式 ### **📌 核心元字符** | 功能 | 正则 | 说明 | | ---------- | -------- | ------------------ | | 任意字符 | `.` | 除换行外的任意字符 | | 任意次数 | `*` | 重复 0 次或更多 | | 一次或多次 | `+` | 重复 1 次或更多 | | 0 或 1 次 | `?` | 可有可无 | | 字符集合 | `[abc]` | 匹配 a/b/c | | 字符范围 | `[a-z]` | 匹配小写字母 | | 非集合字符 | `[^abc]` | 非 a/b/c | | 分组 | `( )` | 用于整体匹配 | | 或 | `a | b` | | 行开头 | `^` | 匹配行首 | | 行结尾 | `$` | 匹配行尾 | ## ✅ 常用字符类 | 功能 | 正则 | 说明 | | ---------- | ---- | -------------- | | 数字 | `\d` | 0–9 | | 非数字 | `\D` | 除数字外 | | 单词字符 | `\w` | 字母数字下划线 | | 非单词字符 | `\W` | 不是 \w | | 空白字符 | `\s` | 空格、换行等 | | 非空白字符 | `\S` | 不是空白 | ## ✅ 常用重复匹配(数量) | 功能 | 正则 | 说明 | | ----------- | ------- | ------------ | | 重复 n 次 | `{n}` | 固定 n 次 | | 重复 ≥n 次 | `{n,}` | n 到无穷 | | 重复 n~m 次 | `{n,m}` | 区间次数 | | 贪婪 | `.*` | 匹配尽可能多 | | 非贪婪 | `.*?` | 匹配尽可能少 | ## ✅ 常用匹配模板(超实用) | 用途 | 正则表达式 | 说明 | | ------------------ | ----------------------------------------------- | ------------------------------- | | 手机号(中国) | `1[3-9]\d{9}` | 11 位手机号 | | 邮箱 | `[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}` | 常用邮箱 | | 身份证(18 位) | `\d{6}(19 | 20)\d{2}[01]\d[0-3]\d{3}[\dXx]` | | URL | `https?://[\w.-]+(?:/[\w./?%&=-]*)?` | http/https 链接 | | IP 地址(简单) | `\d{1,3}(\.\d{1,3}){3}` | IPv4 | | QQ 号 | `[1-9]\d{4,}` | 不能以 0 开头 | | 中文 | `[\u4e00-\u9fa5]+` | 常用汉字 | | 日期(2025-11-30) | `\d{4}-\d{2}-\d{2}` | 简单日期格式 | | 整数(含负号) | `-?\d+` | 负数/正数 | | 小数 | `-?\d+(\.\d+)?` | 带小数点 | ## ✅ 匹配任意内容 | 正则 | 说明 | | ----- | ------------------- | | `.*` | 任意内容(贪婪) | | `.*?` | 任意内容(非贪婪) | | `.+` | 至少一个字符 | | `\s*` | 任意空白(含 0 个) | | `\S+` | 至少一段非空白 |