获取新范围result_1=so...">
当前位置:首页 > 技术 > 正文内容

Python 内置数据结构详解与应用示例

访客 技术 2026年10月9日 1

序列类型的切片处理

在 Python 中,元组、列表和字符串均属于序列类型,支持通过索引和切片进行灵活访问。特别是切片语法 [start:end:step],结合负数步长可以实现快速逆序。

# 定义一个包含中文的乱序字符串
source_text = "黑来马程员序,月过万金,Python学"

# 方案一:先整体倒序,再截取目标片段
# 逻辑:全量反转 -> 获取新范围
result_1 = source_text[::-1][9:14]
print(f"方案一结果: {result_1}")

# 方案二:先定位正序切片,再进行局部倒序
# 逻辑:定位原区间 -> 该区段内反转
result_2 = source_text[5:10][::-1]
print(f"方案二结果: {result_2}")

# 方案三:利用分隔符拆分后取元素
# 逻辑:按逗号分割 -> 取第二个部分 -> 切前五位 -> 反转
parts = source_text.split(",")
result_3 = parts[1][0:5][::-1]
print(f"方案三结果: {result_3}")

# 方案四:结合替换与反转去除特定字符
# 逻辑:分割 -> 去除指定字 -> 整体反转
cleaned = parts[1].replace("金", "")
result_4 = cleaned[::-1]
print(f"方案四结果: {result_4}")

映射类型:字典的基本用法

字典通过键(Key)存储值(Value),查找效率较高。访问数据时直接使用方括号或 get 方法即可。

config = {"host": "127.0.0.1", "port": 8080}
# 通过 key 直接获取对应 value
server_ip = config["host"]
print(f"服务器地址: {server_ip}")

综合场景:列表嵌套与随机分配

实际开发中常遇到需要将一组数据随机分散到多个桶中的需求,利用列表嵌套配合随机模块可实现此功能。

import random

# 原始数据池
data_pool = ['Node-A', 'Node-B', 'Node-C', 'Node-D', 'Node-E']
# 三个任务队列
task_queues = [[], [], []]

for item in data_pool:
    # 随机选择一个队列索引 (0, 1, 或 2)
    target_index = random.randint(0, 2)
    task_queues[target_index].append(item)

# 输出分配后的结构
print("分配结果:", task_queues)

容器的通用属性与转换操作

Python 的序列和集合对象拥有许多共通的内置函数,如求极值、计算长度、类型转换及排序等。以下代码演示了五种主要容器的统一操作接口。

# 初始化不同类型的数据容器
numeric_list = [10, 5, 8, 15, 3]      # 列表
immutable_tup = (10, 5, 8, 15)       # 元组
unique_set = {10, 5, 8, 10, 15}     # 集合 (自动去重)
text_string = "pythontest"           # 字符串
mapping_dict = {"id": 1, "name": "test"} # 字典

# --- 1. 遍历输出 ---
def traverse(container, name):
    print(f"--- 遍历 {name} ---")
    if isinstance(container, dict):
        for k in container:
            print(f"Key: {k}, Value: {container[k]}")
    else:
        for item in container:
            print(item)

traverse(numeric_list, "列表")
traverse(immutable_tup, "元组")
traverse(unique_set, "集合")
traverse(text_string, "字符串")
traverse(mapping_dict, "字典")

# --- 2. 统计特征 (最大/最小/长度) ---
print("\n--- 统计信息 ---")
# 字典的最大/最小值默认比较 Key
print(f"列表最大值: {max(numeric_list)}, 最小值: {min(numeric_list)}")
print(f"集合唯一值数量: {len(unique_set)}")
print(f"字典键的最大值: {max(mapping_dict)}")

# --- 3. 类型强制转换 ---
print("\n--- 类型转换示例 ---")
print(f"元组转列表: {list(immutable_tup)}")
print(f"集合转元组: {tuple(unique_set)}")
print(f"列表转集合(去重): {set(numeric_list)}")
print(f"字典转列表(仅取键): {list(mapping_dict.keys())}")

# --- 4. 排序操作 ---
print("\n--- 排序结果 ---")
# sorted 函数返回新的列表,不影响原数据
print(f"列表升序: {sorted(numeric_list)}")
print(f"列表降序: {sorted(numeric_list, reverse=True)}")
# 字符串按 ASCII 码排序
print(f"字符串排序: {sorted(text_string)}")
# 字典排序基于 Key
print(f"字典按键升序: {sorted(mapping_dict)}")

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。