Python核心語(yǔ)法與常用庫(kù)完全學(xué)習(xí)指南
前言:
本文圍繞 Python 核心知識(shí)點(diǎn)展開,從基礎(chǔ)數(shù)據(jù)類型(列表、元組、字典等)、字符串操作、文件讀寫,到正則表達(dá)式的靈活運(yùn)用,再到 NumPy、matplotlib、scipy、sympy 等常用庫(kù)的實(shí)戰(zhàn)用法,進(jìn)行了全面且細(xì)致的整理。**
雜知識(shí)點(diǎn)
#input 函數(shù):等待屏幕輸入,回車后可以將輸入內(nèi)容輸出到屏幕上
#user_input = input("請(qǐng)輸入內(nèi)容:")
#print("你輸入的是:", user_input)
#import math as mt #導(dǎo)入math并簡(jiǎn)寫為別名mt
#lambda函數(shù) lambda x:x % 3
func = lambda x: x % 3
print(func(7)) # 測(cè)試lambda函數(shù)
列表
列表方法: .index()[索引],.append()[追加],.insert()[插入 ],.remove()[刪除],.pop()[彈出],.sort()[排序]
內(nèi)置函數(shù):zip(),enumerate()
x = [1,2,3] #定義的方式 y = [21,22,23] zip(x,y) #把xy列表進(jìn)行配對(duì),操作后變成了python的內(nèi)置類型 list1 = list(zip(x,y)) #輸出配對(duì)后的結(jié)果,可以表示坐標(biāo)位置 print(list1)
元組
tuple1 = (1,2,3) #用圓括號(hào)定義且不能更改 print(tuple1[1]) #取元素方法和列表相同 x,y,z = tuple1 #把元組中的元素分別賦值給變量x y z print(x,y,z) #可以直接把數(shù)據(jù)賦值給變量
字典
my_cat = {'size': 'fat', 'color': 'gray', 'name': 'Tom'} #字典用花括號(hào)和冒號(hào)進(jìn)行定義,每個(gè)鍵與一個(gè)值關(guān)聯(lián)形成鍵值對(duì)
print(my_cat) #可以直接打印出來(lái)字典內(nèi)容
print(my_cat['color']) #也可以通過鍵取值
my_cat['age'] = 2 #添加或者修改鍵值對(duì) 在my_cat這個(gè)字典中再加入一個(gè)鍵age,對(duì)應(yīng)的值為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) #對(duì)于相同數(shù)據(jù)但順序不同的內(nèi)容,列表有序,字典無(wú)序
字典方法: .values()[遍歷所有值], .keys()[遍歷字典中的所有鍵], .items()[遍歷字典中的所有鍵值對(duì)], .get()[訪問值], .setdefault()[不存在添加,存在無(wú)行為],
spam = {'color': 'red', 'age': 42}
for v in spam.values(): #遍歷字典中的所有值
print(v)
for k in spam.keys(): #遍歷字典中的所有鍵
print(k)
for i in spam.items(): #遍歷字典中的所有鍵值對(duì)
print(i)
for k, v in spam.items(): #遍歷字典中的所有鍵值對(duì) ,k對(duì)應(yīng)鍵,v對(duì)應(yīng)值
print('Key: ' + k + ' Value: ' + str(v)) #把每一對(duì)元素輸出
spam = {'name': 'Pooka', 'age': 5}
spam.setdefault('color', 'black') #如果此字典中不存在這個(gè)鍵值對(duì),則把這個(gè)鍵值對(duì)加入到字典中
print(spam)
spam.setdefault('color', 'white') #如果此字典中存在這個(gè)鍵,重新定義不會(huì)將這個(gè)值定義給鍵
print(spam)
#計(jì)算一個(gè)字符串中每個(gè)字符出現(xiàn)的次數(shù)
message = 'It was a bright cold day in April, and the clocks were striking thirteen.' #輸出提示信息
count = {} #定義一個(gè)空字典count
for character in message: #對(duì)message中的每一個(gè)字符進(jìn)行循環(huán)
count.setdefault(character, 0) #將未出現(xiàn)字母添加進(jìn)字典
count[character] += 1 #count[character]為當(dāng)前字母的計(jì)數(shù)+1
print(count)
集合
集合具有互異性、無(wú)序性,所以可以用來(lái)去除重復(fù)
字符串
x = 'Hello' #字符串
list_x = list(x)
print(list_x) #可以通過list()、str()相互轉(zhuǎn)換
print("hello %d" % 3) #使用占位符打印
print("Pi is <%-6.2f>" % 3.14159) #- :左對(duì)齊,6:占6個(gè)位置 2:小數(shù)點(diǎn)后兩位,f:按照浮點(diǎn)型
# 兩位的話,需要組成元組傳參:print("<%.6f><%.6f>" % (3.144444444, 5.22222221))
字符串方法
print(' '.join(['Separated', 'by', 'nothing'])) #"".join() 用''內(nèi)字符連接列表元素
print("join puts spaces between elements".split(" ")) #"".split(" ") [以' '內(nèi)為界限分解字符串]
print(" Hello, World ".strip(' d')) #strip:把字符串左右兩側(cè)的指定字符去掉
print(" Hello, World ".lstrip('H ') ) #lstrip:把字符串左側(cè)的指定字符去掉
print(" Hello, World ".rstrip()) #rstrip:把字符串右側(cè)的空白字符去掉
定位.?nd() .rfind() .startswith() .endswith()
x = "Mississippi"
new_x = x.replace("ss","+++") #把字符串中的ss替換成+++
print(new_x)
### 大小寫轉(zhuǎn)換.upper() .lower()
print(x.upper())
print(x.lower())
庫(kù)
NumPy庫(kù)
import numpy as np a = np.array([0, 1, 2, 3]) print(a) print(a.ndim) # 維數(shù) print(a.shape) # 行列數(shù) print(np.random.rand(4,4)) # 生成隨機(jī)矩陣 print(np.flip(a)) # 反轉(zhuǎn)數(shù)組 b = np.array([1, 2, 3, 4]) print(np.dot(a, b)) # .dot()計(jì)算向量點(diǎn)積(矩陣乘積)
matplotlib庫(kù)
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 字體使用微軟雅黑
X = np.linspace(-np.pi, np.pi, 256) # 生成等間距的數(shù)值點(diǎn)
C = np.cos(X) # 計(jì)算余弦值
plt.figure(figsize=(8, 6), dpi=80) # 設(shè)置畫布大小和分辨率
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine") # 繪制余弦曲線
# 繪圖參數(shù):x軸數(shù)據(jù), y軸數(shù)據(jù), 顏色, 線寬, 線型, 圖例標(biāo)簽
plt.xlabel('X', fontsize=12) # x軸標(biāo)簽
plt.ylabel('Y', fontsize=12) # y軸標(biāo)簽
plt.title('余弦函數(shù)圖像', fontsize=14)# 圖表標(biāo)題
plt.legend(loc='upper left') # 顯示圖例,位置左上角
plt.scatter(X, C, s=5, color="red") # 繪制散點(diǎn)圖(添加size和color參數(shù)更清晰)
plt.show() # 展示圖像
scipy庫(kù)
import scipy.integrate #調(diào)用積分函數(shù)庫(kù) 數(shù)值積分 integrate
res, err = scipy.integrate.quad(np.sin, 0, 2*np.pi) # 計(jì)算定積分,前一個(gè)參數(shù)是結(jié)果,后一個(gè)參數(shù)是誤差
print(f'<{res:.6f}>,<{err:.6f}>') # 格式化輸出結(jié)果和誤差
import scipy.linalg
arr = np.array([[1,2],[2,3]])
iarr = scipy.linalg.inv(arr) #linalg.inv()計(jì)算矩陣的逆矩陣
print("原矩陣:\n", arr)
print("逆矩陣:\n", iarr)
sympy庫(kù)
import sympy as sym # 導(dǎo)入符號(hào)運(yùn)算的庫(kù)sym
sym.init_printing() # 讓函數(shù)以公式的形式輸出
a = sym.Rational(1, 2) # 定義有理數(shù)1/2
print("有理數(shù)1/2:", a)
x = sym.Symbol('x') # 定義x為符號(hào)
y = sym.Symbol('y') # 補(bǔ)充定義y為符號(hào)(避免未定義報(bào)錯(cuò))
expand_res = sym.expand((x + y) ** 3) # 進(jìn)行符號(hào)運(yùn)算(展開)
print("(x+y)^3展開:", expand_res)
simplify_res = sym.simplify(x**3 + 3*x**2*y + 3*x*y**2 + y**3) # 化簡(jiǎn)運(yùn)算
print("多項(xiàng)式化簡(jiǎn):", simplify_res)
limit_res = sym.limit(sym.sin(x) / x, x, 0) #進(jìn)行求極限運(yùn)算
print("sin(x)/x在x→0的極限:", limit_res)
diff_res = sym.diff(sym.sin(x), x) #對(duì)sinx求導(dǎo)數(shù)
print("sin(x)的導(dǎo)數(shù):", diff_res)
文件操作:
- 'w’為覆蓋寫入,'a’為追加寫入,'r’為讀取文件
### 寫入文件
data = [[1,2],[3,4]]
with open('D:/計(jì)算機(jī)科學(xué)與技術(shù)/python_2025秋季學(xué)期/table.txt', 'w') as f:
f.write(' col 1 col 2\n') # 列標(biāo)簽
for i, row in enumerate(data, 1): # 循環(huán)行元素
f.write(f'row {i:2d}') # 行標(biāo)簽(2位寬)
for val in row: # 循環(huán)列元素
f.write('%14.8f' % val)
f.write('\n')
### 讀取文件
with open('D:/計(jì)算機(jī)科學(xué)與技術(shù)/python_2025秋季學(xué)期/table.txt', 'r') as f:
line = f.read() # 讀取文件賦值給line
f.seek(0) # 重置指針到文件開頭
lines = f.readlines() # 讀取文件中的每一行,作為列表給出來(lái),一行是一個(gè)元素
print(line)
print(lines)
正則匹配
import re #導(dǎo)入庫(kù)
phone_num_regex = re.compile(r'\d\d\d-\d\d\d\d\d\d\d') # r可以將該字符串標(biāo)記為原始字符串,compile()創(chuàng)建Pattern對(duì)象
mo = phone_num_regex.search('My number is 415-5554242.415-5554241') # search():查找字符串中第一次匹配的內(nèi)容
print(mo.group()) # group():提取匹配文本
phone_num_regex_1 = re.compile(r'(\d\d\d)-(\d\d\d\d\d\d\d)') # 用()來(lái)分組
phone_num_regex_2 = re.compile(r'(\d\d\d)-(\d\d\d\d\d\d\d)|(\d\d\d)-(\d\d\d)') # 用 | 匹配多個(gè)目標(biāo)(修正空格問題)
phone_num_regex_3 = re.compile(r'(wo)?man') # 用 ? 表示前面分組可選
phone_num_regex_4 = re.compile(r'(haha){3,5}') # {} 控制匹配次數(shù)(修正原寫法邏輯問題)
phone_num_regex_5 = re.compile(r'haha*') # * 匹配零次及以上
phone_num_regex_6 = re.compile(r'haha+') # + 匹配1次及以上
# findall() 批量提取所有匹配項(xiàng)
all_matches = phone_num_regex.findall('My number is 415-5554242.415-5554241')
print("所有匹配的電話號(hào)碼:", all_matches)
- 正則字符分類說明
- \d 0 到 9 的任何數(shù)字
- \D 除 0 到 9 的數(shù)字以外的任何字符
- \w 任何字母、數(shù)字或下劃線字符(可以認(rèn)為是匹配“單詞”字符)
- \W 除字母、數(shù)字和下劃線以外的任何字符
- \s 空格、制表符或換行符(可以認(rèn)為是匹配“空白”字符)
- \S 除空格、制表符和換行符以外的任何字符
總結(jié)
到此這篇關(guān)于Python核心語(yǔ)法與常用庫(kù)完全學(xué)習(xí)指南的文章就介紹到這了,更多相關(guān)Python核心語(yǔ)法與常用庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python數(shù)據(jù)處理中pd.concat與pd.merge的區(qū)別及說明
這篇文章主要介紹了Python數(shù)據(jù)處理中pd.concat與pd.merge的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Python操作MongoDB的實(shí)現(xiàn)示例
本文主要介紹了使用pymongo庫(kù)來(lái)連接MongoDB服務(wù)器,進(jìn)行集合和文檔的操作,創(chuàng)建和刪除索引,以及使用聚合框架進(jìn)行數(shù)據(jù)處理,感興趣的可以了解一下2025-05-05
python pyautogui手動(dòng)活動(dòng)(模擬鼠標(biāo)鍵盤)自動(dòng)化庫(kù)使用
這篇文章主要為大家介紹了python pyautogui手動(dòng)活動(dòng)(模擬鼠標(biāo)鍵盤)自動(dòng)化庫(kù)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01

