Python 核心语法与常用库完全指南

2025博客之星年度评选已开启 10w+人浏览 1.4k人参与

欢迎来到 s a y − f a l l 的文章 欢迎来到say-fall的文章 欢迎来到sayfall的文章

在这里插入图片描述

🌈 say-fall:个人主页
🚀 专栏:《手把手教你学会C++》 | 《C语言从零开始到精通》 | 《数据结构与算法》 | 《小游戏与项目》
💪 格言:做好你自己,才能吸引更多人,与他们共赢,这才是最好的成长方式。

前言:

本文围绕 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)
  • 正则字符分类说明
  1. \d 0 到 9 的任何数字
  2. \D 除 0 到 9 的数字以外的任何字符
  3. \w 任何字母、数字或下划线字符(可以认为是匹配“单词”字符)
  4. \W 除字母、数字和下划线以外的任何字符
  5. \s 空格、制表符或换行符(可以认为是匹配“空白”字符)
  6. \S 除空格、制表符和换行符以外的任何字符

  • 本节完…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值