当前位置: 首页 > news >正文

day24 python元组和OS模块的深度探索

目录

一、元组的特性与应用

(一)元组的特点

(二)元组的创建

(三)元组的常见用法

二、元组在机器学习管道中的应用

三、可迭代对象的遍历

四、OS模块的实用功能

(一)获取当前工作目录

(二)列出当前目录下的文件

(三)安全地拼接路径

(四)环境变量

(五)遍历目录树


一、元组的特性与应用

(一)元组的特点

  • 有序且可重复:元组与列表类似,都是有序的集合,可以包含重复的元素。

  • 不可变性:元组中的元素一旦定义,便不可修改。这一特性在深度学习场景中尤为重要,例如在定义模型参数和形状时,确保其后续不会被意外修改。

  • 广泛应用于机器学习库:许多流行的机器学习和深度学习库(如TensorFlow、PyTorch、NumPy等)在API中广泛使用元组来表示形状、配置等信息。

(二)元组的创建

元组的创建非常简单,可以使用圆括号(),也可以省略括号,通过逗号分隔元素来创建。例如:

my_tuple1 = (1, 2, 3)
my_tuple2 = ('a', 'b', 'c')
my_tuple3 = (1, 'hello', 3.14, [4, 5])  # 元组可以包含不同类型的数据
my_tuple4 = 10, 20, 'thirty'  # 省略括号,逗号是关键

此外,还可以通过tuple()函数创建空元组或从其他可迭代对象转换为元组。

(三)元组的常见用法

  • 索引与切片:可以通过索引访问元组中的元素,也可以使用切片操作来获取元组的子集

    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])  # 每隔一个元素取一个
  • 获取元组长度:使用len()函数可以获取元组中元素的数量

    my_tuple = (1, 2, 3)
    print(len(my_tuple))  # 输出:3

二、元组在机器学习管道中的应用

在机器学习中,Pipeline类常用于组织多个处理步骤。Pipeline接收一个列表作为输入,其中每个元素是一个元组,元组的第一个元素是步骤的名称,第二个元素是对应的处理对象。例如:

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegressionpipeline = Pipeline([('scaler', StandardScaler()),  # 数据标准化('logreg', LogisticRegression())  # 逻辑回归分类器
])

这种结构的优势在于:

  • 列表:定义了步骤的执行顺序,且可以随时修改。

  • 元组:将每个步骤的名称和处理对象绑定在一起,便于后续引用和设置参数。

三、可迭代对象的遍历

可迭代对象是Python中一个非常重要的概念,它指的是那些可以在循环中逐个返回其成员的对象。常见的可迭代对象包括:

  • 序列类型

    • list(列表)

    • tuple(元组)

    • str(字符串)

    • range(范围)

  • 集合类型

    • set(集合)

  • 字典类型

    • dict(字典):迭代时返回键(keys)

以下是一些示例:

# 列表
my_list = [1, 2, 3, 4, 5]
for item in my_list:print(item)# 元组
my_tuple = ('a', 'b', 'c')
for item in my_tuple:print(item)# 字符串
my_string = "hello"
for char in my_string:print(char)# range
for number in range(5):print(number)# 集合
my_set = {3, 1, 4, 1, 5, 9}
for item in my_set:print(item)# 字典
my_dict = {'name': 'Alice', 'age': 30, 'city': 'Singapore'}
for key in my_dict:print(key)for value in my_dict.values():print(value)for key, value in my_dict.items():print(f"Key: {key}, Value: {value}")

四、OS模块的实用功能

随着深度学习项目的复杂度增加,数据量和代码结构也变得越来越复杂。os模块提供了丰富的功能,用于管理文件、目录和路径,以及进行基本的操作系统交互。

(一)获取当前工作目录

import os
current_dir = os.getcwd()
print(f"当前工作目录: {current_dir}")

(二)列出当前目录下的文件

files = os.listdir()
print(f"当前目录下的文件列表: {files}")

(三)安全地拼接路径

path_a = r'C:\Users\YourUsername\Documents'
path_b = 'MyProjectData'
file = 'results.csv'
file_path = os.path.join(path_a, path_b, file)
print(f"拼接后的路径: {file_path}")

(四)环境变量

os.environ是一个类似字典的对象,包含了当前系统的所有环境变量。可以通过以下方式访问和打印环境变量:

for variable_name, value in os.environ.items():print(f"{variable_name}={value}")

(五)遍历目录树

os.walk()是一个非常强大的函数,用于遍历目录树。它会为每个目录生成一个包含三个元素的元组:(dirpath, dirnames, filenames)。以下是一个示例:

假设目录结构如下:

my_project/
├── data/
│   ├── processed/
│   └── raw/
│       └── data1.csv
├── src/
│   ├── models/
│   │   └── model_a.py
│   └── utils.py
├── main.py
└── README.md

使用os.walk()遍历:

import osstart_directory = os.getcwd()  # 当前工作目录
print(f"--- 开始遍历目录: {start_directory} ---")for dirpath, dirnames, filenames in os.walk(start_directory):print(f"  当前访问目录 (dirpath): {dirpath}")print(f"  子目录列表 (dirnames): {dirnames}")print(f"  文件列表 (filenames): {filenames}")

输出结果:

--- 开始遍历目录: c:\Users\PC\Desktop\python训练营 ---当前访问目录 (dirpath): c:\Users\PC\Desktop\python训练营子目录列表 (dirnames): ['演示1']文件列表 (filenames): ['day24 元组和OS模块.ipynb']当前访问目录 (dirpath): c:\Users\PC\Desktop\python训练营\演示1子目录列表 (dirnames): ['演示文件夹2']文件列表 (filenames): ['day21 常见的降维算法.ipynb', 'day23 机器学习流水线.ipynb']当前访问目录 (dirpath): c:\Users\PC\Desktop\python训练营\演示1\演示文件夹2子目录列表 (dirnames): []文件列表 (filenames): ['main.ipynb']

@浙大疏锦行

相关文章:

  • Hapi.js知识框架
  • containerd 之使用 ctr 和 runc 进行底层容器操作与管理
  • 深度学习---获取模型中间层输出的意义
  • day19-线性表(顺序表)(链表I)
  • 记录为什么LIst数组“增删慢“,LinkedList链表“查改快“?
  • Vue.js---分支切换与cleanup
  • 门禁人脸识别系统详细技术文档
  • 使用聊天模型和提示模板构建一个简单的 LLM 应用程序
  • 论坛系统(中-1)
  • Excel宏和VBA
  • 【周输入】510周阅读推荐-1
  • Timsort 算法
  • Promise.all静态方法
  • 销量预测评估指标
  • Python Django基于模板的药品名称识别系统【附源码、文档说明】
  • OpenVLA (2) 机器人环境和环境数据
  • 浏览器打开多线程下载教程,加快下载速度,让你的下载速度有质的飞跃
  • 【Bluedroid】蓝牙 HID DEVICE 初始化流程源码解析
  • C++中的虚表和虚表指针的原理和示例
  • 人脸识别系统中的隐私与数据权利保障
  • 第78届戛纳电影节开幕,罗伯特·德尼罗领取终身成就奖
  • 牛市早报|中方调整对美加征关税措施,五部门约谈外卖平台企业
  • 彭丽媛同巴西总统夫人罗桑热拉参观中国国家大剧院
  • 中国巴西民间推动建立经第三方验证的“森林友好型”牛肉供应链
  • 超新星|18岁冲击中超金靴,王钰栋的未来无限可能
  • 福建宁德市长张永宁拟任设区市党委正职,曾获评全国优秀县委书记