欢迎来到 s a y − f a l l 的文章 欢迎来到say-fall的文章 欢迎来到say−fall的文章
前言:
本文围绕 Python 核心知识点展开,从基础数据类型(列表、元组、字典等)、字符串操作、文件读写,到正则表达式的灵活运用,再到 NumPy、matplotlib、scipy、sympy 等常用库的实战用法,进行了全面且细致的整理。**
正文:
杂知识点
#input 函数:等待屏幕输入,回车后可以将输入内容输出到屏幕上
#user_input = input("请输入内容:")
#print("你输入的是:", user_input)
#import math as mt #导入math并简写为别名mt
#lambda函数 lambda x:x % 3
func = lambda x: x % 3
print(func(7)) # 测试lambda函数
列表
列表方法: .index()[索引],.append()[追加],.insert()[插入 ],.remove()[删除],.pop()[弹出],.sort()[排序]
内置函数:zip(),enumerate()
x = [1,2,3] #定义的方式
y = [21,22,23]
zip(x,y) #把xy列表进行配对,操作后变成了python的内置类型
list1 = list(zip(x,y)) #输出配对后的结果,可以表示坐标位置
print(list1)
元组
tuple1 = (1,2,3) #用圆括号定义且不能更改
print(tuple1[1]) #取元素方法和列表相同
x,y,z = tuple1 #把元组中的元素分别赋值给变量x y z
print(x,y,z) #可以直接把数据赋值给变量
字典
my_cat = {'size': 'fat', 'color': 'gray', 'name': 'Tom'} #字典用花括号和冒号进行定义,每个键与一个值关联形成键值对
print(my_cat) #可以直接打印出来字典内容
print(my_cat['color']) #也可以通过键取值
my_cat['age'] = 2 #添加或者修改键值对 在my_cat这个字典中再加入一个键age,对应的值为2(存在则为修改)
print(my_cat)
spam = ['cats', 'dogs', 'moose'] #列表1
bacon = ['dogs', 'moose', 'cats'] #列表2
print(spam == bacon)
eggs = {'name': 'Zophie', 'species': 'cat', 'age': '8'} #字典1
ham = {'species': 'cat', 'age': '8', 'name': 'Zophie'} #字典2
print(eggs == ham) #对于相同数据但顺序不同的内容,列表有序,字典无序
字典方法: .values()[遍历所有值], .keys()[遍历字典中的所有键], .items()[遍历字典中的所有键值对], .get()[访问值], .setdefault()[不存在添加,存在无行为],
spam = {'color': 'red', 'age': 42}
for v in spam.values(): #遍历字典中的所有值
print(v)
for k in spam.keys(): #遍历字典中的所有键
print(k)
for i in spam.items(): #遍历字典中的所有键值对
print(i)
for k, v in spam.items(): #遍历字典中的所有键值对 ,k对应键,v对应值
print('Key: ' + k + ' Value: ' + str(v)) #把每一对元素输出
spam = {'name': 'Pooka', 'age': 5}
spam.setdefault('color', 'black') #如果此字典中不存在这个键值对,则把这个键值对加入到字典中
print(spam)
spam.setdefault('color', 'white') #如果此字典中存在这个键,重新定义不会将这个值定义给键
print(spam)
#计算一个字符串中每个字符出现的次数
message = 'It was a bright cold day in April, and the clocks were striking thirteen.' #输出提示信息
count = {} #定义一个空字典count
for character in message: #对message中的每一个字符进行循环
count.setdefault(character, 0) #将未出现字母添加进字典
count[character] += 1 #count[character]为当前字母的计数+1
print(count)
集合
集合具有互异性、无序性,所以可以用来去除重复
字符串
x = 'Hello' #字符串
list_x = list(x)
print(list_x) #可以通过list()、str()相互转换
print("hello %d" % 3) #使用占位符打印
print("Pi is <%-6.2f>" % 3.14159) #- :左对齐,6:占6个位置 2:小数点后两位,f:按照浮点型
# 两位的话,需要组成元组传参:print("<%.6f><%.6f>" % (3.144444444, 5.22222221))
字符串方法
print(' '.join(['Separated', 'by', 'nothing'])) #"".join() 用''内字符连接列表元素
print("join puts spaces between elements".split(" ")) #"".split(" ") [以' '内为界限分解字符串]
print(" Hello, World ".strip(' d')) #strip:把字符串左右两侧的指定字符去掉
print(" Hello, World ".lstrip('H ') ) #lstrip:把字符串左侧的指定字符去掉
print(" Hello, World ".rstrip()) #rstrip:把字符串右侧的空白字符去掉
定位.find() .rfind() .startswith() .endswith()
x = "Mississippi"
new_x = x.replace("ss","+++") #把字符串中的ss替换成+++
print(new_x)
### 大小写转换.upper() .lower()
print(x.upper())
print(x.lower())
库
NumPy库
import numpy as np
a = np.array([0, 1, 2, 3])
print(a)
print(a.ndim) # 维数
print(a.shape) # 行列数
print(np.random.rand(4,4)) # 生成随机矩阵
print(np.flip(a)) # 反转数组
b = np.array([1, 2, 3, 4])
print(np.dot(a, b)) # .dot()计算向量点积(矩阵乘积)
matplotlib库
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 字体使用微软雅黑
X = np.linspace(-np.pi, np.pi, 256) # 生成等间距的数值点
C = np.cos(X) # 计算余弦值
plt.figure(figsize=(8, 6), dpi=80) # 设置画布大小和分辨率
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine") # 绘制余弦曲线
# 绘图参数:x轴数据, y轴数据, 颜色, 线宽, 线型, 图例标签
plt.xlabel('X', fontsize=12) # x轴标签
plt.ylabel('Y', fontsize=12) # y轴标签
plt.title('余弦函数图像', fontsize=14)# 图表标题
plt.legend(loc='upper left') # 显示图例,位置左上角
plt.scatter(X, C, s=5, color="red") # 绘制散点图(添加size和color参数更清晰)
plt.show() # 展示图像
scipy库
import scipy.integrate #调用积分函数库 数值积分 integrate
res, err = scipy.integrate.quad(np.sin, 0, 2*np.pi) # 计算定积分,前一个参数是结果,后一个参数是误差
print(f'<{res:.6f}>,<{err:.6f}>') # 格式化输出结果和误差
import scipy.linalg
arr = np.array([[1,2],[2,3]])
iarr = scipy.linalg.inv(arr) #linalg.inv()计算矩阵的逆矩阵
print("原矩阵:\n", arr)
print("逆矩阵:\n", iarr)
sympy库
import sympy as sym # 导入符号运算的库sym
sym.init_printing() # 让函数以公式的形式输出
a = sym.Rational(1, 2) # 定义有理数1/2
print("有理数1/2:", a)
x = sym.Symbol('x') # 定义x为符号
y = sym.Symbol('y') # 补充定义y为符号(避免未定义报错)
expand_res = sym.expand((x + y) ** 3) # 进行符号运算(展开)
print("(x+y)^3展开:", expand_res)
simplify_res = sym.simplify(x**3 + 3*x**2*y + 3*x*y**2 + y**3) # 化简运算
print("多项式化简:", simplify_res)
limit_res = sym.limit(sym.sin(x) / x, x, 0) #进行求极限运算
print("sin(x)/x在x→0的极限:", limit_res)
diff_res = sym.diff(sym.sin(x), x) #对sinx求导数
print("sin(x)的导数:", diff_res)
文件操作:
- 'w’为覆盖写入,'a’为追加写入,'r’为读取文件
### 写入文件
data = [[1,2],[3,4]]
with open('D:/计算机科学与技术/python_2025秋季学期/table.txt', 'w') as f:
f.write(' col 1 col 2\n') # 列标签
for i, row in enumerate(data, 1): # 循环行元素
f.write(f'row {i:2d}') # 行标签(2位宽)
for val in row: # 循环列元素
f.write('%14.8f' % val)
f.write('\n')
### 读取文件
with open('D:/计算机科学与技术/python_2025秋季学期/table.txt', 'r') as f:
line = f.read() # 读取文件赋值给line
f.seek(0) # 重置指针到文件开头
lines = f.readlines() # 读取文件中的每一行,作为列表给出来,一行是一个元素
print(line)
print(lines)
正则匹配
import re #导入库
phone_num_regex = re.compile(r'\d\d\d-\d\d\d\d\d\d\d') # r可以将该字符串标记为原始字符串,compile()创建Pattern对象
mo = phone_num_regex.search('My number is 415-5554242.415-5554241') # search():查找字符串中第一次匹配的内容
print(mo.group()) # group():提取匹配文本
phone_num_regex_1 = re.compile(r'(\d\d\d)-(\d\d\d\d\d\d\d)') # 用()来分组
phone_num_regex_2 = re.compile(r'(\d\d\d)-(\d\d\d\d\d\d\d)|(\d\d\d)-(\d\d\d)') # 用 | 匹配多个目标(修正空格问题)
phone_num_regex_3 = re.compile(r'(wo)?man') # 用 ? 表示前面分组可选
phone_num_regex_4 = re.compile(r'(haha){3,5}') # {} 控制匹配次数(修正原写法逻辑问题)
phone_num_regex_5 = re.compile(r'haha*') # * 匹配零次及以上
phone_num_regex_6 = re.compile(r'haha+') # + 匹配1次及以上
# findall() 批量提取所有匹配项
all_matches = phone_num_regex.findall('My number is 415-5554242.415-5554241')
print("所有匹配的电话号码:", all_matches)
- 正则字符分类说明
- \d 0 到 9 的任何数字
- \D 除 0 到 9 的数字以外的任何字符
- \w 任何字母、数字或下划线字符(可以认为是匹配“单词”字符)
- \W 除字母、数字和下划线以外的任何字符
- \s 空格、制表符或换行符(可以认为是匹配“空白”字符)
- \S 除空格、制表符和换行符以外的任何字符
- 本节完…
23万+

被折叠的 条评论
为什么被折叠?



