PYTHON訓練營DAY24

# SO代碼我們的感情好像跳樓機

# 元組創建時,可以省略括號:my_tuple4 = 10, 20, 'thirty'

# 字符串要加“ ”

元組

一、創建

my_tuple1 = (1, 2, 3)
my_tuple2 = ('a', 'b', 'c')
my_tuple3 = (1, 'hello', 3.14, [4, 5]) # 可以包含不同類型的元素
print(my_tuple1)
print(my_tuple2)
print(my_tuple3)查看類型
print(type(my_tuple2)) # 創建空元組
empty_tuple = ()
# 或者使用 tuple() 函數
empty_tuple2 = tuple()
print(empty_tuple)
print(empty_tuple2)

二、常見用法

(一)索引

my_tuple = ('P', 'y', 't', 'h', 'o', 'n')
print(my_tuple[0])  # 第一個元素
print(my_tuple[2])  # 第三個元素
print(my_tuple[-1]) # 最后一個元素

(二)切片(取值)

my_tuple = (0, 1, 2, 3, 4, 5)
print(my_tuple[1:4])  # 從索引 1 到 3 (不包括 4)
print(my_tuple[:3])   # 從開頭到索引 2
print(my_tuple[3:])   # 從索引 3 到結尾
print(my_tuple[::2])  # 每隔一個元素取一個

(三)長度獲取

my_tuple = (1, 2, 3)
print(len(my_tuple))

三、管道與元組

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score# 1. 加載數據
iris = load_iris()
X = iris.data
y = iris.target# 2. 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 3. 構建管道
# 管道按順序執行以下步驟:
#    - StandardScaler(): 標準化數據(移除均值并縮放到單位方差)
#    - LogisticRegression(): 邏輯回歸分類器
pipeline = Pipeline([('scaler', StandardScaler()),('logreg', LogisticRegression())
])# 4. 訓練模型
pipeline.fit(X_train, y_train)# 5. 預測
y_pred = pipeline.predict(X_test)# 6. 評估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"模型在測試集上的準確率: {accuracy:.2f}")

可迭代對象

一個可迭代對象:能夠一次返回其成員(元素)的對象,可在一個循環(如 for 循環)中遍歷

序列類型:list、tuple`(元組)、str?(字符串)、range(范圍)
集合類型:set?(集合)
字典類型:字典、文件對象 、生成器、迭代器

# 列表 (list)
print("迭代列表:")
my_list = [1, 2, 3, 4, 5]
for item in my_list:print(item)# 元組 (tuple)
print("迭代元組:")
my_tuple = ('a', 'b', 'c')
for item in my_tuple:print(item)# 字符串 (str)
print("迭代字符串:")
my_string = "hello"
for char in my_string:print(char)# range (范圍)
print("迭代 range:")
for number in range(5):  # 生成 0, 1, 2, 3, 4print(number)# 集合類型 (Set Types)# 集合 (set) - 注意集合是無序的,所以每次迭代的順序可能不同
print("迭代集合:")
my_set = {3, 1, 4, 1, 5, 9}
for item in my_set:print(item)# 迭代字典的值 (values)
print("迭代字典的值:")
for value in my_dict.values():print(value)# 迭代字典的鍵值對 (items)
print("迭代字典的鍵值對:")
for key, value in my_dict.items(): # items方法很好用print(f"Key: {key}, Value: {value}")

OS模塊

處理圖像數據集、自定義數據加載流程、保存和加載復雜的模型結構時,os 模塊非常有用

(一)讀取路徑

import os
os.getcwd()

為什么不直接復制路徑?

假設你直接右鍵復制了絕對路徑?/Users/you/projects/data.csv,可能會遇到以下問題:

  1. 換臺電腦就失效:在另一臺電腦上,路徑可能變成?/Users/another/data.csv

  2. 協作時出錯:團隊成員的文件結構可能不同,硬編碼路徑會導致代碼無法共享。

  3. 目錄變化時維護成本高:如果文件移動到其他位置,需要修改所有相關代碼。

(二)獲取文件列表

os.listdir() # list directory 獲取當前工作目錄下的文件列表
import os# 在腳本開頭獲取當前工作目錄
BASE_DIR = os.getcwd()# 構建數據文件路徑
data_path = os.path.join(BASE_DIR, "data", "input.csv")
output_path = os.path.join(BASE_DIR, "results", "output.csv")# 使用路徑
with open(data_path, "r") as f:data = f.read()# 保存結果
with open(output_path, "w") as f:f.write(data)

使用 r'' 原始字符串,這樣就不需要寫雙反斜杠 \\,因為\會涉及到轉義問題

path_a = r'C:\Users\YourUsername\Documents' # r''這個寫法是寫給python解釋器看,他只會讀取引號內的內容,不用在意r的存在會不會影響拼接
path_b = 'MyProjectData'
file = 'results.csv'# 使用 os.path.join 將它們安全地拼接起來,os.path.join 會自動使用 Windows 的反斜杠 '\' 作為分隔符
file_path = os.path.join(path_a , path_b, file)file_path

在 Python 中,反斜杠?\?是用來表示轉義字符的。例如:

  • \n?表示換行符
  • \t?表示制表符
  • \"?表示雙引號(用于在字符串中包含雙引號)

但在?Windows 文件路徑?中,路徑分隔符是?\(例如:C:\Users\data.csv),這就會產生沖突

如果直接在字符串中使用單斜杠?\,Python 會將其視為轉義字符,導致路徑解析錯誤

(三)環境變量方法

# 使用 .items() 方法可以方便地同時獲取變量名(鍵)和變量值,之前已經提過字典的items()方法,可以取出來鍵和值
# os.environ是可迭代對象for variable_name, value in os.environ.items():# 直接打印出變量名和對應的值print(f"{variable_name}={value}")# 打印總數
print(f"\n--- 總共檢測到 {len(os.environ)} 個環境變量 ---")

目錄樹

C:\
├── Documents
│   ├── report.txt
│   └── project_folder
│       ├── data.csv
│       └── README.md
├── Pictures
│   ├── landscape.jpg
│   └── portrait.png
└── Downloads

常見用途

  • 批量處理文件:例如重命名所有圖片文件、壓縮文件夾等。

  • 搜索文件:查找特定類型的文件(如?.csv.txt)。

  • 統計目錄信息:計算目錄大小、文件數量等

遍歷數據目錄并加載數據

import os
from PIL import Image
import numpy as npdata_dir = "data"  # 數據根目錄
train_dir = os.path.join(data_dir, "train")
test_dir = os.path.join(data_dir, "test")# 加載訓練數據
X_train, y_train = [], []
for class_name in os.listdir(train_dir):class_dir = os.path.join(train_dir, class_name)if os.path.isdir(class_dir):  # 確保是目錄for img_name in os.listdir(class_dir):img_path = os.path.join(class_dir, img_name)if img_path.endswith(('.jpg', '.jpeg', '.png')):# 加載圖像并預處理(示例:轉為NumPy數組)img = Image.open(img_path).resize((224, 224))img_array = np.array(img) / 255.0  # 歸一化X_train.append(img_array)y_train.append(class_name)  # 類別標簽# 轉換為NumPy數組(用于深度學習模型)
X_train = np.array(X_train)
y_train = np.array(y_train)print(f"訓練數據形狀: {X_train.shape}")
print(f"訓練標簽數量: {len(y_train)}")

@浙大疏錦行

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80647.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80647.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80647.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

超聲波傳感器模塊

歡迎來到 破曉的歷程的 博客 ??不負時光,不負己?? 文章目錄 1.HC-SR04介紹2.HC-SR04原理介紹2.1原理概述3.2原理詳解 4驅動代碼編寫4.1寫前思考4.2硬件連線 5.總結hcsr04.hhcsr04.c 1.HC-SR04介紹 超聲波傳感器有很多種類的型號:HC-SR04、UC-025、…

《Effective Python》第2章 字符串和切片操作——深入理解Python 中的字符數據類型(bytes 與 str)的差異

引言 本篇博客基于學習《Effective Python》第三版 Chapter 2: Strings and Slicing 中的 Item 10: Know the Differences Between bytes and str 的總結與延伸。在 Python 編程中,字符串處理是幾乎每個開發者都會頻繁接觸的基礎操作。然而,Python 中的…

py7zr解壓文件時報錯CrcError(crc32, f.crc32, f.filename)

報錯信息 Traceback (most recent call last):File "/home/hp/project/test/file_util.py", line 130, in extract_archive_7zarchive.extract(targets[fixed_file], pathoutput_dir, recursiveTrue)File "/home/hp/miniconda3/envs/celery/lib/python3.10/sit…

物理:由基本粒子組成的個體能否提煉和重組?

個體差異源于基本粒子組合的復雜性與隨機性,這一假設若成立,確實可能為生物醫學帶來革命性突破——但需要突破技術、理論與系統層級的多重壁壘。以下從科學邏輯與技術路徑展開分析: 一、隨機組合中的共性與穩定結構 1. 自然界的自組織規律 涌現性(Emergence):盡管粒子組…

動態路由EIGRP的配置

動態路由EIGRP的配置 動態路由EIGRP:增強內部網關協議 為何收斂快、不成環? 路由計算的無環路和路由的收斂速度是路由計算的重要指標。EIGRP協議由于使用了DUAL算法,使得EIGRP協議在路由計算中不可能有環路路由產生,同時路由計…

組合問題(多條件)

39. 組合總和 - 力扣&#xff08;LeetCode&#xff09; class Solution { private:vector<vector<int>>result;vector<int>path;void backtracking(vector<int>& candidates, int target,int sum,int startIndex){if(sum>target){return;}if(…

SimScape物理建模實例2--帶控制的單質量彈簧阻尼系統

模型下載&#xff1a; 基于simscape&#xff0c;單質量系統帶位置控制資源-CSDN文庫 在實例1中&#xff0c;我們搭建了不帶控制的單質量彈簧阻尼系統&#xff0c;該系統沒有外界力量介入&#xff0c;只有彈簧的初始彈力&#xff0c;帶著彈簧使勁彈來彈去。 SimScape物理建模實…

OpenAI Text 模型與 Chat 模型調用實戰指南:從基礎配置到創意花店命名

在 AI 應用開發的浪潮中&#xff0c;OpenAI 的大語言模型成為開發者實現創新功能的得力工具。其中&#xff0c;Text 模型和 Chat 模型作為核心接口&#xff0c;被廣泛應用于文本生成、對話交互等場景。本文將以 “為花店起名” 為實際需求&#xff0c;手把手教你如何安全調用這…

網頁常見水印實現方式

文章目錄 1 明水印技術實現1.1 DOM覆蓋方案1.2 Canvas動態渲染1.3 CSS偽元素方案2 暗水印技術解析2.1 空域LSB算法2.2 頻域傅里葉變換3 防篡改機制設計3.1 MutationObserver防護3.2 Canvas指紋追蹤4 前后端實現對比5 攻防博弈深度分析5.1 常見破解手段5.2 進階防御策略6 選型近…

現代化QML組件開發教程

現代化QML組件開發教程 目錄 QML基礎介紹QML項目結構基本組件詳解自定義組件開發狀態與過渡高級主題最佳實踐 QML基礎介紹 什么是QML QML (Qt Meta Language) 是一種聲明式語言&#xff0c;專為用戶界面設計而創建。它是Qt框架的一部分&#xff0c;讓開發者能夠創建流暢、…

C/C++ 程序執行的主要過程

預處理&#xff08;Preprocessing&#xff09; 任務&#xff1a; 處理源代碼中以 # 開頭的預處理指令&#xff0c;包括&#xff1a; 頭文件包含&#xff08;#include&#xff09;&#xff1a;將頭文件&#xff08;如 stdio.h&#xff09;的內容直接插入到源文件中。宏替換&…

時間序列預測建模的完整流程以及數據分析【學習記錄】

文章目錄 1.時間序列建模的完整流程2. 模型選取的和數據集2.1.ARIMA模型2.2.數據集介紹 3.時間序列建模3.1.數據獲取3.2.處理數據中的異常值3.2.1.Nan值3.2.2.異常值的檢測和處理&#xff08;Z-Score方法&#xff09; 3.3.離散度3.4.Z-Score3.4.1.概述3.4.2.公式3.4.3.Z-Score與…

ValueError: Caught ValueError in DataLoader worker process 0.

參考鏈接&#xff1a; https://stackoverflow.com/questions/1841565/valueerror-invalid-literal-for-int-with-base-10 它提示我有個地方值錯誤空字符 果然因為格式處理沒有傳進去東西&#xff0c;找下原因&#xff0c;讓它正常處理 原來是相對路徑的.影響了程序運行 將v…

JavaScript性能優化實戰,從理論到落地的全面指南

在前端開發領域&#xff0c;JavaScript的性能優化是提升用戶體驗的核心環節。隨著Web應用復雜度的提升&#xff0c;開發者面臨的性能瓶頸也日益多樣化。本文將從理論分析、代碼實踐和工具使用三個維度&#xff0c;系統性地講解JavaScript性能優化的實戰技巧&#xff0c;并通過大…

SQL、Oracle 和 SQL Server 的比較與分析

SQL、Oracle 和 SQL Server 的比較與分析 一、基礎概念 1. SQL (Structured Query Language) 定義&#xff1a;結構化查詢語言&#xff0c;用于管理關系型數據庫的標準語言類型&#xff1a; DDL (數據定義語言)&#xff1a;CREATE, ALTER, DROPDML (數據操作語言)&#xff1…

Telnet 類圖解析

Telnet 類圖&#xff08;文本描述&#xff09; --------------------------------------- | Telnet | --------------------------------------- | - host: str | # 目標主機 | - port: int …

Ansible安裝與核心模塊實戰指南

Ansible安裝與核心模塊實戰指南 自動化運維入門:從安裝到模塊化任務配置 Ansible作為一款無代理自動化工具,通過模塊化設計實現高效管理,尤其適用于快速部署、配置和維護大規模系統。本文將從安裝、核心模塊使用到實際案例,全面解析其核心功能與最佳實踐。 一、Ansible安裝…

VLLM推理大模型顯存不夠后,導致程序引擎崩潰的調優方案嘗試

背景介紹 硬件 A800 80G模型 chat-glm4-9b-128K環境 生產正常顯存占用情況 glm4 占用32GB 其他顯存工占用38GB左右 總共剩余10GB。 問題描述 推理時報錯日志&#xff0c;由于內網環境無法拿出日志&#xff0c;與下面的類似。 File "/data/miniconda3_new/envs/vllm-new…

【Nacos】env NACOS_AUTH_IDENTITY_KEY must be set.

【Nacos】env NACOS_AUTH_IDENTITY_KEY must be set. 問題描述 env NACOS_AUTH_IDENTITY_KEY must be set.原因分析 在 .env 文件中設置 Nacos 身份驗證相關的所有必要環境變量。 解決方案 添加到 .env 文件中 NACOS_AUTH_IDENTITY_KEYAuthorization NACOS_AUTH_IDENTITY…

C++語法基礎(下)

&#xff08;注&#xff1a;在看本文是如果感覺內容有點突兀&#xff0c;請先瀏覽《C語法基礎&#xff08;上&#xff09;》這篇文章幫助更好理解&#xff09; 一.缺省參數 缺省參數是聲明或定義函數時為函數的參數指定一個缺省值。在調用該函數時&#xff0c;如果沒有指定實參…