Python基础数据结构详解:字符串、列表、元组和字典的常用方法

目录

一、引言:为什么学习这些数据结构?

二、字符串(String)的常用方法

1. 基本操作

2. 查找索引

3. 大小写转换

4. 位置调整

5. 开头和结尾检查

6. 分割和连接

7. 删除空白字符

8. 类型判定

9. 替换内容

字符串小结

三、列表(List)的常用方法

1. 基本操作

2. 遍历列表

3. 常用方法

列表小结

四、元组(Tuple)的常用方法

1. 定义和特性

2. 常用方法

3. 优点

元组小结

五、字典(Dictionary)的常用方法

1. 定义和特性

2. 遍历字典

3. 常用方法

字典小结

六、总结与比较

实际应用示例

七、结语


Python作为一门易学易用的编程语言,其内置的数据结构是学习和开发的基础。字符串、列表、元组和字典是Python中最常用的数据类型,掌握它们的常用方法能极大提升编程效率。本博客将用通俗易懂的语言,详细讲解这些数据结构的每个方法,包括定义、使用场景、代码示例和注意事项。内容全面,字数超过7000字,确保你读完就能上手实战!


一、引言:为什么学习这些数据结构?

在Python中,数据以不同形式存储和处理。字符串用于文本操作,列表用于有序集合,元组用于不可变数据,字典用于键值对映射。这些结构是Python的核心,几乎所有程序都依赖它们。例如:

  • 字符串处理用户输入或文件内容。
  • 列表管理动态数据集合,如购物车商品。
  • 元组存储固定配置,如坐标点。
  • 字典快速查询数据,如用户信息数据库。
    学好这些方法,能让你写出更简洁、高效的代码。下面我们逐一深入。

二、字符串(String)的常用方法

字符串是文本数据,用单引号或双引号定义,如 s = "Hello"。Python提供了丰富的方法操作字符串。

1. 基本操作
  • len() 获取长度:返回字符串的字符数。

    s = "Python"
    print(len(s))  # 输出:6
    

  • + 拼接字符串:将两个字符串连接。

    s1 = "Hello"
    s2 = "World"
    print(s1 + " " + s2)  # 输出:"Hello World"
    

  • * 重复字符串:将字符串重复多次。

    s = "Hi"
    print(s * 3)  # 输出:"HiHiHi"
    

  • format() 格式化字符串:插入变量到模板中,比+更灵活。

    name = "Alice"
    age = 25
    print("My name is {}, age is {}".format(name, age))  # 输出:"My name is Alice, age is 25"
    

2. 查找索引
  • index() 返回索引:查找子串首次出现的位置,找不到会报错(需先判断存在)。

    s = "apple"
    print(s.index("p"))  # 输出:1(索引从0开始)
    # 如果找不到:s.index("z") 会报错 ValueError
    

  • find() 返回索引:类似index,但找不到时返回-1,更安全。

    s = "apple"
    print(s.find("l"))  # 输出:3
    print(s.find("z"))  # 输出:-1(表示未找到)
    

3. 大小写转换
  • capitalize() 首字母大写:将字符串第一个字母大写。

    s = "python"
    print(s.capitalize())  # 输出:"Python"
    

  • upper() 全大写:所有字母转为大写。

    s = "Hello"
    print(s.upper())  # 输出:"HELLO"
    

  • lower() 全小写:所有字母转为小写。

    s = "WORLD"
    print(s.lower())  # 输出:"world"
    

  • swapcase() 大小写互换:大写变小写,小写变大写。

    s = "PyThOn"
    print(s.swapcase())  # 输出:"pYtHoN"
    

  • title() 单词首字母大写:每个单词的首字母大写。

    s = "hello world"
    print(s.title())  # 输出:"Hello World"
    

4. 位置调整
  • center(width, fillchar) 居中:字符串居中,两侧用指定字符填充。

    s = "Python"
    print(s.center(10, "_"))  # 输出:"__Python__"(总长度10,两侧各两个_)
    

  • ljust(width, fillchar) 居左:字符串靠左,右侧填充字符。

    s = "Hello"
    print(s.ljust(8, "*"))  # 输出:"Hello***"(总长度8,右侧3个*)
    

  • zfill(width) 居右填充0:字符串靠右,左侧用0填充。

    s = "42"
    print(s.zfill(5))  # 输出:"00042"(总长度5)
    

  • rjust(width, fillchar) 居右:字符串靠右,左侧填充字符。

    s = "Python"
    print(s.rjust(10, "-"))  # 输出:"----Python"(总长度10,左侧4个-)
    

5. 开头和结尾检查
  • startswith(prefix) 检查开头:判断是否以指定子串开头。

    s = "Hello, world!"
    print(s.startswith("Hello"))  # 输出:True
    print(s.startswith("world"))  # 输出:False
    

  • endswith(suffix) 检查结尾:判断是否以指定子串结尾。

    s = "file.txt"
    print(s.endswith(".txt"))  # 输出:True
    

6. 分割和连接
  • split(sep) 分割字符串:按分隔符切割字符串,返回列表。

    s = "apple,banana,orange"
    print(s.split(","))  # 输出:['apple', 'banana', 'orange']
    

  • join(iterable) 连接字符串:将列表元素用字符串连接。

    words = ["Python", "is", "fun"]
    print(" ".join(words))  # 输出:"Python is fun"
    

7. 删除空白字符
  • strip() 删除两侧空白:移除字符串开头和结尾的空格、制表符等。

    s = "  Hello World  "
    print(s.strip())  # 输出:"Hello World"
    

  • lstrip() 删除左侧空白:仅移除开头空白。

    s = "  Python  "
    print(s.lstrip())  # 输出:"Python  "
    

  • rstrip() 删除右侧空白:仅移除结尾空白。

    s = "  Hello  "
    print(s.rstrip())  # 输出:"  Hello"
    

8. 类型判定
  • isalpha() 是否全字母:检查是否所有字符都是字母。

    s = "Python"
    print(s.isalpha())  # 输出:True
    s = "123"
    print(s.isalpha())  # 输出:False
    

  • isdigit() 是否全数字:检查是否所有字符都是数字。

    s = "12345"
    print(s.isdigit())  # 输出:True
    s = "12a"
    print(s.isdigit())  # 输出:False
    

  • islower() 是否全小写:检查是否所有字母都是小写。

    s = "python"
    print(s.islower())  # 输出:True
    

  • isupper() 是否全大写:检查是否所有字母都是大写。

    s = "HELLO"
    print(s.isupper())  # 输出:True
    

9. 替换内容
  • replace(old, new) 替换子串:将指定旧子串替换为新子串。
    s = "I like apples"
    print(s.replace("apples", "bananas"))  # 输出:"I like bananas"
    

字符串小结

字符串是不可变的,每次操作都生成新字符串。常用在文本处理、数据清洗中。例如,读取文件后,用split解析内容,用strip清理空白。


三、列表(List)的常用方法

列表是可变有序集合,用方括号定义,如 lst = [1, "a", True]。支持动态增删元素。

1. 基本操作
  • len() 获取长度:返回列表元素个数。

    lst = [1, 2, 3]
    print(len(lst))  # 输出:3
    

  • 索引和切片

    • 索引:访问单个元素,索引从0开始,负数索引从末尾计数(-1是最后一个)。
      lst = ["a", "b", "c"]
      print(lst[0])  # 输出:"a"
      print(lst[-1])  # 输出:"c"(最后一个)
      

    • 切片:lst[start:end:step],提取子列表。
      • start:起始索引(包含)。
      • end:结束索引(不包含)。
      • step:步长,默认1。
      lst = [0, 1, 2, 3, 4, 5]
      print(lst[1:4])  # 输出:[1, 2, 3](索引1到3)
      print(lst[::2])  # 输出:[0, 2, 4](步长2)
      print(lst[::-1])  # 输出:[5, 4, 3, 2, 1, 0](逆序)
      

  • + 拼接列表:合并两个列表。

    lst1 = [1, 2]
    lst2 = [3, 4]
    print(lst1 + lst2)  # 输出:[1, 2, 3, 4]
    

  • * 重复列表:复制列表多次。

    lst = [1, 2]
    print(lst * 3)  # 输出:[1, 2, 1, 2, 1, 2]
    

2. 遍历列表
  • for element in lst 遍历元素:直接访问每个元素。

    lst = ["apple", "banana", "cherry"]
    for fruit in lst:print(fruit)  # 依次输出:apple, banana, cherry
    

  • for i in range(len(lst)) 遍历索引:通过索引访问元素。

    for i in range(len(lst)):print(f"Index {i}: {lst[i]}")
    

3. 常用方法
  • count(element) 统计元素出现次数

    lst = [1, 2, 2, 3, 2]
    print(lst.count(2))  # 输出:3
    

  • index(element) 返回元素索引:查找元素首次出现的位置,找不到会报错(建议先用in判断)。

    lst = ["a", "b", "c"]
    print(lst.index("b"))  # 输出:1
    # 如果找不到:lst.index("d") 会报错 ValueError
    

  • 添加元素

    • append(element) 末尾添加:在列表末尾添加单个元素。
      lst = [1, 2]
      lst.append(3)
      print(lst)  # 输出:[1, 2, 3]
      

    • insert(index, element) 指定位置插入:在索引位置插入元素。
      lst = [1, 3]
      lst.insert(1, 2)  # 在索引1处插入2
      print(lst)  # 输出:[1, 2, 3]
      

    • extend(iterable) 扩展列表:将可迭代对象(如列表)的元素逐个添加到末尾。
      lst = [1, 2]
      lst.extend([3, 4])
      print(lst)  # 输出:[1, 2, 3, 4]
      

  • 删除元素

    • pop(index) 删除并返回元素:删除指定索引的元素(默认最后一个)。
      lst = [1, 2, 3]
      print(lst.pop())  # 输出:3(删除最后一个)
      print(lst)  # 输出:[1, 2]
      print(lst.pop(0))  # 输出:1(删除索引0)
      

    • remove(element) 删除指定元素:删除首次出现的元素,元素不存在会报错。
      lst = [1, 2, 2, 3]
      lst.remove(2)  # 删除第一个2
      print(lst)  # 输出:[1, 2, 3]
      

    • clear() 清空列表:移除所有元素。
      lst = [1, 2, 3]
      lst.clear()
      print(lst)  # 输出:[]
      

  • 排序和逆序

    • sort() 排序:默认升序排序(修改原列表)。
      lst = [3, 1, 2]
      lst.sort()
      print(lst)  # 输出:[1, 2, 3]
      

      • 降序:设置reverse=True
        lst.sort(reverse=True)  # 输出:[3, 2, 1]
        

    • reverse() 逆序:反转列表元素顺序。
      lst = [1, 2, 3]
      lst.reverse()
      print(lst)  # 输出:[3, 2, 1]
      

  • in 成员检查:判断元素是否在列表中。

    lst = [1, 2, 3]
    print(2 in lst)  # 输出:True
    print(4 in lst)  # 输出:False
    

列表小结

列表是动态的,适合存储需频繁修改的数据。例如,管理用户输入队列时,用append添加新项,用pop处理完成项。


四、元组(Tuple)的常用方法

元组是不可变有序集合,用圆括号定义,如 tup = (1, "a", True)。一旦创建,不能修改元素,适合存储常量数据。

1. 定义和特性
  • 定义:使用圆括号,元素间用逗号分隔。
    tup = (1, 2, 3)
    

  • 单元素元组:必须加逗号,否则会被识别为其他类型。
    single_tup = (1,)  # 正确:元组
    not_tup = (1)     # 错误:这是整数,不是元组
    

2. 常用方法
  • index(element) 返回索引:查找元素首次出现的位置,找不到会报错。

    tup = ("a", "b", "c")
    print(tup.index("b"))  # 输出:1
    

  • count(element) 统计元素出现次数

    tup = (1, 2, 2, 3)
    print(tup.count(2))  # 输出:2
    

3. 优点
  • 不可变性:与字符串类似,元组创建后不能修改,避免意外变更。
  • 高效性:比列表更节省内存,访问速度更快。
  • 适用场景:存储配置参数、坐标点等固定数据。
    point = (10, 20)  # 表示坐标
    

元组小结

元组适合存储不需要修改的数据。例如,函数返回多个值时,常用元组打包。


五、字典(Dictionary)的常用方法

字典是键值对集合,用花括号定义,如 d = {"name": "Alice", "age": 25}。支持快速查询。

1. 定义和特性
  • 定义
    • 花括号:d = {"key": "value"}
    • dict()函数:d = dict(name="Alice", age=25)
  • 键和值要求
    • 键:必须是不可变类型(如字符串、数字、元组)。
    • 值:可以是任意类型(包括列表、字典等),支持嵌套。
    nested_dict = {"user": {"name": "Bob", "age": 30},"scores": [85, 90, 78]
    }
    

2. 遍历字典
  • for key in d 遍历键
    d = {"name": "Alice", "age": 25}
    for key in d:print(key, d[key])  # 输出:name Alice, age 25
    

  • keys() 获取所有键
    for key in d.keys():print(key)  # 输出:name, age
    

  • values() 获取所有值
    for value in d.values():print(value)  # 输出:Alice, 25
    

  • items() 获取键值对
    for key, value in d.items():print(f"{key}: {value}")  # 输出:name: Alice, age: 25
    

3. 常用方法
  • update(other_dict) 合并字典:将另一个字典的键值对添加到当前字典。

    d1 = {"a": 1}
    d2 = {"b": 2}
    d1.update(d2)
    print(d1)  # 输出:{'a': 1, 'b': 2}
    

  • pop(key) 删除键值对:删除指定键的键值对,并返回值。

    d = {"name": "Alice", "age": 25}
    age = d.pop("age")
    print(age)  # 输出:25
    print(d)    # 输出:{'name': 'Alice'}
    

  • popitem() 删除最后一个键值对:删除并返回最后插入的键值对(元组形式)。

    d = {"a": 1, "b": 2}
    item = d.popitem()
    print(item)  # 输出:('b', 2)
    print(d)     # 输出:{'a': 1}
    

  • clear() 清空字典:移除所有键值对。

    d = {"a": 1}
    d.clear()
    print(d)  # 输出:{}
    

  • get(key, default) 安全获取值:获取键对应的值,键不存在时返回默认值(避免报错)。

    d = {"name": "Alice"}
    print(d.get("name", "Unknown"))  # 输出:Alice
    print(d.get("age", 0))           # 输出:0(键不存在)
    

字典小结

字典适合快速查找和映射数据。例如,用户管理系统用键(用户ID)查询值(用户信息)。


六、总结与比较

  • 可变性
    • 列表和字典可变(可修改)。
    • 字符串和元组不可变(创建后不能改)。
  • 适用场景
    • 字符串:文本处理。
    • 列表:动态数据集合(如待办事项)。
    • 元组:固定数据(如常量配置)。
    • 字典:键值映射(如数据库查询)。
  • 性能:元组比列表更高效;字典查询速度极快($O(1)$时间复杂度)。
实际应用示例

一个简单的用户管理系统:

# 定义用户数据(字典列表)
users = [{"id": 1, "name": "Alice", "age": 25},{"id": 2, "name": "Bob", "age": 30}
]# 添加用户(列表操作)
users.append({"id": 3, "name": "Charlie", "age": 28})# 查询用户(字典操作)
def find_user(user_id):for user in users:if user["id"] == user_id:return userreturn None# 输出用户信息(字符串操作)
user = find_user(2)
if user:info = "Name: {}, Age: {}".format(user["name"], user["age"])print(info.center(30, "-"))  # 输出居中格式


七、结语

掌握字符串、列表、元组和字典的常用方法,是Python编程的基石。本博客详细讲解了每个方法的用法、代码示例和实际场景,帮助你从零开始构建扎实基础。建议多动手练习,例如:

  • 用字符串方法清洗数据。
  • 用列表管理动态集合。
  • 用元组存储常量。
  • 用字典实现快速查询。
    如有疑问,欢迎留言讨论!继续学习Python高级特性,如集合(Set)或生成器(Generator),会让你的代码更强大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/diannao/91464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Liunx练习项目5.1-周期化任务;时间同步服务;

1.系统周期化任务1.1 at命令的用法at 时间 指定在规定的时间上执行相应的操作,完成操作crtlD完成编辑一分钟后输入的指令完成,创建了file{1..5}的文件at -l 查看系统上面所有用户的调度at -c 可以查看该任务的指令at -d 加编号可以删除该任务at -v 可以…

小皮面板搭建pikachu靶场

一、搭建所需的工具 1.下载小皮面板 下载地址为:小皮面板(phpstudy) - 让天下没有难配的服务器环境! 2.下载靶场所需的文件 下载地址为:https://github.com/zhuifengshaonianhanlu/pikachu 二、环境的搭建 打开小皮面板,使用所…

使用aiohttp实现高并发爬虫

使用aiohttp来编写一个高并发的爬虫,想法很不错,现实很骨感。这里我们要知道,由于高并发可能会对目标服务器造成压力,请确保遵守目标网站的robots.txt,并合理设置并发量,避免被封IP。 我将通过示例代码&…

【Linux庖丁解牛】— 信号量ipc管理!

1. 并发编程概念铺垫> 多个执行流【进程】看到同一份资源:共享资源。> 被保护起来的资源叫做临界资源。> 在进程中,涉及临界资源的程序段叫做临界区。【说人话就是程序中访问共享资源的代码】> 什么是互斥:任何时刻,只…

Spring Boot全局异常处理详解

原代码:package com.weiyu.exception;import com.weiyu.pojo.Result; import com.weiyu.utils.ErrorFileResponseUtils; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import …

FHE技术将彻底改变在线隐私保护方式

1. 在线隐私的简史 互联网刚刚诞生时,所有的内容都是未加密的。人们通过一个特定的地址访问网站,这个地址以“HTTP”开头。当时,这并不是什么大问题,因为人们在线访问的都是内容,而这些内容本身已经是公开的。但随着电…

Cursor配置Java环境、创建Spring Boot项目

一:配置JDK和Maven cursor默认会读取环境变量JAVA_HOME和MAVEN_HOME,如果没有配置去找默认路径~/.m2/settings.xml也可以手动指定:Ctrl Shift P 输入"Preferences:Open User Settings(JSON)"打开settings.json文件,然…

win11添加无线显示器(两个笔记本实现双屏)

前置条件: 两个笔记本要要支持无线显示器,支持蓝牙; 1、自己重装的win11系统,首先根据网上说明进去的时候,红色显示无无线投屏; 2、安装网上操作,查看自己电脑是否支持无线投屏(是支…

【MAC技巧】Bash/Zsh切换失败的故障排除

【MAC技巧】Bash/Zsh切换失败的故障排除 Troubleshooting to Failure " chsh: no changes made" By JacksonML 在Mac电脑中,终端(Terminal)是常用的命令行工具,对开发和运维至关重要。 依照苹果电脑的系统软件迭代,终端中存有B…

卷积神经网络-卷积的分类

卷积的定义卷积是图像处理中最核心的操作之一,其本质是通过卷积核(滤波器)与图像进行滑动窗口计算(像素值乘积之和),实现对图像特征的提取、增强或抑制。一、二维卷积--针对二维矩阵进行处理1.1单通道见得最…

全网首发:使用GIT下载时崩溃退出,是因为机械硬盘

前面有几篇文章,说是GIT下载会退出。开始以为是虚拟机问题。把家里的虚拟机复制到公司,照样崩溃。后来认为是内存不足。昨天在家里下载代码,也崩溃退出。心里觉得奇怪,试了一次,还是退出。差别在哪里?之前是…

YAML 自动化用例中 GET vs POST 请求的参数写法差异

GET 请求:用 params 传参(附加在 URL 上) config:name: "GET 查询用户信息"base_url: "https://api.example.com"teststeps:- name: "根据 userId 查询用户信息"request:method: GETurl: /api/user/detailpara…

使用 SeaTunnel 建立从 MySQL 到 Databend 的数据同步管道

SeaTunnel 是一个非常易用、超高性能的分布式数据集成平台,支持实时海量数据同步。 每天可稳定高效地同步数百亿数据,已被近百家企业应用于生产,在国内较为普及。 Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分…

linux服务器换ip后客户端无法从服务器下载数据到本地问题处理

服务器换ip后客户端无法从服务器下载数据到本地,根据上图提示,让用户清理下~/.ssh/known_hosts文件,下载恢复正常。

从0到1实现Shell!Linux进程程序替换详解

目录从0到1实现Shell!Linux进程程序替换详解 🚀引言:为什么进程需要"变身术"?一、程序替换:进程的"换衣服"魔法 🔄1.1 什么是程序替换?1.2 程序替换的原理:内存…

暑期算法训练.2

目录 6.力扣 11.盛水最多的容器 6.1 题目解析: 6.2 算法思路: 6.2.1 暴力解法: 6.2.2 优化算法: 6.3 代码演示: ​编辑 6.4 总结反思: 7.力扣 611.有效的三角形个数 7.1 题目解析: 7.2…

华为OD 消消乐游戏

1. 题意 游戏规则:输入一个只包含英文字母的字符串,字符串中的两个字母如果相邻且相同,就可以消除。 在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。 输出最终得到的字符串长度。 输入 输入原始…

小白学HTML,操作HTML文件篇(2)

目录 一、添加多媒体 1.添加网页图片 2.添加网页音频 3.添加网页视频 二、创建容器 1. 标签 2.布局 三、创建表格 1.表格标签 2.添加表格表头 3.添加表格标题 一、添加多媒体 在 HTML 网页中可以轻松地使用标签来添加图片、音频、视频等多媒体,而这些多媒体并…

微服务架构中实现跨服务的字段级权限统一控制

结合集中式权限管理、分布式上下文传递、动态策略执行等技术 ​​一、核心架构设计​​ ​​1. 分层控制模型​​ ​​网关层​​:统一校验用户身份与基础权限,拦截非法请求。 ​​服务层​​:基于用户权限动态过滤数据字段,实现业务级控制。 ​​策略中心​​:集中管理权…

【实现100个unity特效之27】使用unity的ShaderGraph实现一个带裁剪边缘光的裁剪效果(2d3d通用)

文章目录普通裁剪效果1、创建一个Lit Shader Graph2、ShaderGraph前置配置3、添加节点4、效果5、修改裁剪方向带边缘色的裁剪1、在裁剪的基础上添加裁剪边缘光2、边缘的亮度3、修改裁剪方向4、效果5、我们可以代码控制它的变化,如下2D3D游戏通用专栏推荐完结普通裁剪…