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

Python 字符串与列表核心操作全解:从独有功能到实战场景

一、字符串 (STR) 独有功能

  • 特点: 每种数据类型形态不同,且内部有独有功能。字符串通常用单引号、双引号或三引号包裹。

  • 核心功能:

    • 大小写转换:upper() (变大写), lower() (变小写)。

    • 判断开头/结尾:startswith() (判断是否以某个字符串开头), endswith() (判断是否以某个字符串结尾)。

    • 分割/拼接:split() (按指定字符切割成列表), join() (将列表元素按指定字符连接成字符串)。

    • 替换:replace() (替换字符串中的指定子串)。

    • 判断数字:isdecimal() (判断字符串是否只包含数字字符)。

  • 重要特性: 上述功能都会生成新的字符串值,而不改变原始字符串

  • 新增功能:去除空白 strip()

    • 作用: 移除字符串两端的空白字符(空格、制表符、换行符等)。

    • 场景: 数据比较("123""123 " 不等),用户输入数据清理(用户名、密码)。

    • 变种:lstrip() (去除左侧空白), rstrip() (去除右侧空白)。

    • 注意:strip()无法去除字符串内部的空白(需用 replace() 替换空格为"")。

    • 示例应用: 用户登录时对用户名/密码输入进行 strip() 处理,确保数据准确性。

  • 其他功能: 字符串还有许多不常用功能,可通过 STR 后按 Ctrl/Cmd + 左键 查看源码。

二、字符串 (STR) 公共功能

这些功能不仅字符串有,其他数据类型也可能具备。

  • 获取长度:len()

    • 作用: 获取字符串包含的字符数量。

    • 示例:len("中国联通") 结果为 4。

  • 索引与取值:[]

    • 作用: 通过位置(下标)访问字符串中的单个字符。

    • 正向索引: 从 0 开始,逐一递增 (name[0] 为第一个字符)。

    • 反向索引: 从 -1 开始,逐一递减 (name[-1] 为最后一个字符)。

    • 循环字符串:

      • for item in name: (最常用,直接遍历每个字符)。

      • while 循环 (通过手动维护索引 indexlen() 间接遍历)。

      • for i in range(len(name)): (遍历索引,适合同时需要索引和字符的场景)。

    • 嵌套取值: 当通过索引取到的值本身也是可索引的类型(如字符串),可以继续通过索引获取更深层次的字符。

  • 切片:[start:end:step]

    • 作用: 从字符串中截取一个连续的子序列。

    • 规则:start 包含,end 不包含 (前取后不取)。

    • 省略:start 省略表示从头开始,end 省略表示到尾部结束。

    • 步长(step): 可选,指定取值间隔(默认为 1)。

  • 包含判断:in

    • 作用: 判断一个子字符串是否包含在另一个字符串中。

    • 示例:"中国" in text 返回 TrueFalse

    • 场景: 过滤评论内容、文件行内容判断等。

三、练习与实践建议

  • 核心: 熟能生巧,切勿死记硬背。多动手练习,遇到问题时翻看笔记。

  • 练习题目示例 (附解答思路):

    • 提取用户输入文本中的所有数字(可利用 isdecimal() 及字符串拼接或列表 append()join())。

    • 查找指定路径下所有 .mp4 后缀的文件(引入 import os, os.listdir(), rsplit() 获取文件扩展名)。

    • 判断字符串是否包含某个子序列 (in 操作符)。


四、列表 (LIST) 知识点

列表是另一种常见的容器型数据类型。

  • 特点:

    • [] 定义,元素之间用逗号分隔。

    • 有序: 元素有固定顺序。

    • 可存储混合类型: 可包含字符串、数字、甚至其他列表等。

    • 动态可变: 可增加或删除元素。

  • 重要特性: 列表的独有功能通常会直接修改原始列表,而非生成新列表(与字符串不同)。

五、列表 (LIST) 独有功能

  • 追加元素:append()

    • 作用: 将一个元素添加到列表的末尾

    • 示例应用: 用户注册功能(将新注册的用户名添加到用户列表中)。

  • 插入元素:insert(index, element)

    • 作用: 将一个元素插入到列表的指定索引位置。原位置及之后元素后移。

    • 示例应用: 用户排队中,VIP用户插队到最前面。

    • 注意: 插入前可对输入进行校验(如去除空白 strip(),判断是否为空字符串,防止无效数据)。if name: 可判断字符串是否为空。

  • 删除元素:remove(element) del list[index]

    • remove(element)

      • 作用: 删除列表中指定值的第一个匹配项。

      • 注意: 如果元素不存在,会报错。删除前建议用 if element in list: 进行判断。

    • del list[index]

      • 作用: 删除列表中指定索引位置的元素。

      • 注意: 删除后,后续元素的索引会发生变化。

    • 示例应用: 抽奖小程序(抽中后从员工列表中移除,防止重复中奖)。可结合 random.choice() 随机抽取元素。

  • 清空列表:clear()

    • 作用: 移除列表中的所有元素,使其变为空列表。

  • 反转列表:reverse()

    • 作用: 将列表中的元素顺序原地反转

六、列表 (LIST) 公共功能

与字符串类似,列表也支持以下公共功能:

  • 获取长度:len() (获取列表元素数量)。

  • 索引与取值:[] (通过索引访问列表中的单个元素)。

    • 列表也支持正向索引(0开始)和反向索引(-1开始)。

    • 重要: 列表元素本身如果也是列表或其他可索引类型,可进行多重索引取值(如 user_list[1][0])。

  • 切片:[start:end:step] (截取列表的一个子序列)。

  • 循环列表:

    • for item in list: (最常用,直接遍历每个元素)。

    • for i in range(len(list)): (遍历索引,适合同时需要索引和元素的场景)。

  • 包含判断:in (判断某个元素是否包含在列表中)。

七、列表 (LIST) 案例

  • 多层嵌套列表取值:

    • 示例结构:user_list = [['爱丽丝', '123'], ['艾瑞克', '666']]

    • 通过 for item in user_list: 遍历,item 仍是列表。

    • 再通过 item[0] 获取用户名,item[1] 获取密码。

  • 商品选择功能:

    • 展示商品列表:利用 for i in range(len(goods_list)) 同时获取索引和商品名,格式化输出。

    • 用户选择:input() 获取索引,并进行严格校验

      • 是否为数字 (isdecimal())。

      • 转换为整数 (int())。

      • 是否在有效索引范围 (>= 0< len(list))。

    • 根据合法索引获取并输出对应商品。

  • 用户注册功能:

    • 定义空列表 user_list = []

    • 循环让用户输入用户名和密码。

    • 对输入进行 strip() 去除空白。

    • 判断用户名/密码是否为空,若为空则 continue 继续循环。

    • 将用户名和密码组合成一个小列表 [username, password]

    • 将小列表 append()user_list 中。

    • 可增加注册数量限制,当 len(user_list) 达到上限时 break 终止循环。

    • 注册完成后,可再次遍历 user_list 展示所有已注册用户信息(类似多层嵌套取值)。


http://www.lqws.cn/news/204841.html

相关文章:

  • Redis故障转移
  • 探索Python融合地学:斗之气七段(运算符)
  • 在命令行直接执行可以执行成功,加入crontab定时任务执行shell脚本不成功失败的问题解决方法
  • 晶圆Map图芯片拉选
  • MATLAB-电偶极子所产出的电磁场仿真
  • gRPC 的四种通信模式完整示例
  • RSA加密算法:非对称密码学的基石
  • 磁盘修复工具
  • Day47
  • Global Security Markets 第 10 章衍生品知识点总结​
  • BeckHoff--MES数据交互 MQ TRANCE API (MQ 追溯 API - 系统概述和命令参考)
  • Go爬虫开发学习记录
  • IEC 61347-1:2015 灯控制装置安全通用要求详解
  • PyTorch 中cumprod函数计算张量沿指定维度的累积乘积详解和代码示例
  • 视频字幕质量评估的大规模细粒度基准
  • Docker基础(二)
  • Vue Fragment vs React Fragment
  • 洛谷P12170 [蓝桥杯 2025 省 Python B] 攻击次数
  • 《Vuejs设计与实现》第 8 章(挂载与更新)
  • vue注册自定义指令
  • 罗尔斯·罗伊斯数字孪生技术赋能航空发动机运维革新:重构维护范式,驱动行业低碳转型
  • 第10篇《数据库中间件集成监控与全链路观测系统设计》
  • 81 实战一:给root目录扩容
  • Java中栈的多种实现类详解
  • 【工具使用】STM32CubeMX-FreeRTOS操作系统-信号标志、互斥锁、信号量篇
  • Cell-o1:强化学习训练LLM解决单细胞推理问题
  • 初探Succinct Jagged稀疏多项式承诺方案
  • conda指定包安装的channel
  • Redis Key过期策略
  • 学习使用YOLO的predict函数使用