目录

一、元组的特性与应用

(一)元组的特点

(二)元组的创建

(三)元组的常见用法

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

三、可迭代对象的遍历

四、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 LogisticRegression

pipeline = 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 os

start_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']

@浙大疏锦行

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐