news 2026/8/22 17:15:29

Agent学习路线之——python 入门 ④(字符串、列表、元组、字典、集合)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Agent学习路线之——python 入门 ④(字符串、列表、元组、字典、集合)

本文为Python学习第四天的完整笔记,涵盖Python五大容器类型:字符串、元组、列表、字典、集合的增删改查操作及易错点。适合零基础入门学习,建议配合代码实操。


一、容器概述

在Python中,容器是用来存储多个数据的对象。根据是否可变、是否有序等特性,分为不同的类型:

容器类型是否可变是否有序是否可重复定义符号
字符串(str)❌ 不可变✅ 有序✅ 可重复' '" "
元组(tuple)❌ 不可变✅ 有序✅ 可重复( )
列表(list)✅ 可变✅ 有序✅ 可重复[ ]
字典(dict)✅ 可变❌ 无序(3.7+有序)❌ 键不可重复{键:值}
集合(set)✅ 可变❌ 无序❌ 不可重复{ }

开发小技巧:容器都可以直接构造返回。例如直接写a=1, b=2然后[a, b],不必再先创建一个空容器再添加元素。


二、字符串

字符串是Python中最常用的容器之一,用于存储文本数据。

2.1 字符串的不可变性与修改方法

字符串是不可变类型,不能直接修改原字符串,但可以通过方法生成新的字符串

join() —— 连接可迭代对象

用指定连接符将可迭代对象中的字符串元素连接成一个新字符串。

# 用 "-" 连接列表中的字符串 words = ["2026", "08", "19"] result = "-".join(words) print(result) # 2026-08-19 # 注意:可迭代对象里面的元素必须都是字符串 # numbers = [1, 2, 3] # "-".join(numbers) # ❌ 报错,必须是字符串
split() —— 分割字符串

按指定分隔符将字符串分割成列表

date = "2026-08-19" parts = date.split("-") print(parts) # ['2026', '08', '19'] # 按空格分割 sentence = "Python 是最棒的语言" words = sentence.split(" ") print(words) # ['Python', '是最棒的语言']
replace() —— 替换字符

将字符串中的指定内容替换为新的内容,返回新的字符串

text = "我喜欢 Java,Java 很好用" new_text = text.replace("Java", "Python") print(new_text) # 我喜欢 Python,Python 很好用 # 原字符串不会被修改 print(text) # 我喜欢 Java,Java 很好用

2.2 字符串查询方法

方法作用示例
索引通过下标获取单个字符s[0]
in判断子串是否在字符串中"py" in "python"
count()统计子串出现次数s.count("p")
index()查找子串第一次出现的索引,找不到报错s.index("python")
find()查找子串第一次出现的索引,找不到返回-1s.find("java")
upper()转大写s.upper()
strip()去除首尾空格和换行(默认)s.strip()
s = "python programming" # 字符串和字符都可以操作 print(s.count("python")) # 1 print(s.count("p")) # 2 print(s.index("python")) # 0 print(s.find("java")) # -1(找不到返回-1,不会报错) print(s.upper()) # PYTHON PROGRAMMING # strip 去除首尾空格和换行 text = " hello world \n" print(text.strip()) # "hello world"

三、元组

元组(tuple)是不可变的有序容器,一旦创建就不能修改其中的元素。

3.1 元组的基本操作

元组支持查询操作,与字符串类似:

t = (10, 20, 30, 20, 40) # 索引查询 print(t[0]) # 10 print(t[-1]) # 40 # index() 查找位置 print(t.index(20)) # 1(第一个20的位置) # count() 统计次数 print(t.count(20)) # 2 # in 判断是否存在 print(30 in t) # True

3.2 元组的易错点

⚠️ 单元素元组必须加逗号

如果元组只有一个元素,必须加上逗号,否则Python会将其识别为普通括号表达式。

tuple1 = (1,) # ✓ 这才是元组 tuple2 = (2,) # ✓ 元组 tuple3 = (3) # ✗ 这是整数 3,不是元组! print(type(tuple1)) # <class 'tuple'> print(type(tuple3)) # <class 'int'>
元组支持相加和切片

虽然元组不可变,但支持通过+拼接生成新元组,也支持切片操作。

tuple = (1, 2, 3) # 直接相加(生成新元组) tuple += (1, 2) print(tuple) # (1, 2, 3, 1, 2) # 切片操作 print(tuple[:-1]) # (1, 2, 3, 1) print(tuple[1:3]) # (2, 3) # 也支持 in 查询判断 print("4" in tuple) # False

四、列表

列表(list)是Python中最常用的可变有序容器,支持增删改查各种操作。

4.1 列表的增加操作

方法作用示例
append()在末尾添加一个元素list.append(4)
extend()在末尾添加可迭代对象的多个元素list.extend([5,6])
insert()在指定位置插入元素list.insert(0, "开头")
my_list = [1, 2, 3] # append 添加单个元素 my_list.append(4) print(my_list) # [1, 2, 3, 4] # extend 添加可迭代对象(列表、元组、字符串等) my_list.extend([5, 6]) print(my_list) # [1, 2, 3, 4, 5, 6] # insert 在指定位置插入 my_list.insert(0, "开头") print(my_list) # ['开头', 1, 2, 3, 4, 5, 6]

4.2 列表的删除操作

方法作用说明
del list[索引]删除指定索引元素也可删除整个列表或切片
pop(索引)删除并返回指定索引元素默认删除最后一个
remove("元素")删除第一个匹配的元素按值删除
my_list = ['a', 'b', 'c', 'd', 'b'] # pop 删除并返回 item = my_list.pop(1) print(item) # 'b' print(my_list) # ['a', 'c', 'd', 'b'] # remove 按值删除(删除第一个匹配的) my_list.remove('b') print(my_list) # ['a', 'c', 'd'] # del 删除指定索引 del my_list[0] print(my_list) # ['c', 'd']

注意:列表这里一般不用del删除整个列表,防止操作失误删除原list导致后续代码无法使用。

4.3 列表的修改操作

my_list = [3, 1, 4, 1, 5] # 通过索引修改 my_list[0] = 100 print(my_list) # [100, 1, 4, 1, 5] # sort() 排序(原地排序,不返回新列表) my_list.sort() print(my_list) # [1, 1, 4, 5, 100] # reverse() 反转 my_list.reverse() print(my_list) # [100, 5, 4, 1, 1]

4.4 列表的查询操作

my_list = ['apple', 'banana', 'cherry'] # 索引查询 print(my_list[1]) # banana # index() 查找位置 print(my_list.index('banana')) # 1 # count() 统计次数 print(my_list.count('apple')) # 1 # in 判断是否存在 print('apple' in my_list) # True

实用技巧:判断一个变量在不在列表里面,不需要循环!直接if 变量 in 列表就行。

fruits = ['apple', 'banana', 'cherry'] if 'banana' in fruits: print("有香蕉!")

4.5 列表的易错点

和元组一样,列表也支持相加、切片、in等操作:

list1 = [1, 2] list2 = [3, 4] # 列表相加(拼接) print(list1 + list2) # [1, 2, 3, 4] # 切片 print(list1[::-1]) # [2, 1] # in 判断 print(2 in list1) # True

五、字典

字典(dict)是Python中非常强大的键值对容器,通过键(key)来快速查找值(value)。

5.1 字典的增删改

# 创建字典 dict1 = {"height": 1.8, "weight": 90, "name": "邵梦飞"} # 增/改:通过键来添加或修改 dict1["age"] = 25 # 新增键值对 dict1["height"] = 1.85 # 修改已有键的值 print(dict1)
# 删除操作 dict1 = {"height": 1.8, "weight": 90, "name": "邵梦飞"} # del 删除指定键值对 del dict1["weight"] print(dict1) # {'height': 1.8, 'name': '邵梦飞'} # clear() 清空字典 dict1.clear() print(dict1) # {} # pop() 删除并返回指定键的值 dict1 = {"height": 1.8, "weight": 90} value = dict1.pop("height") print(value) # 1.8 print(dict1) # {'weight': 90}

5.2 字典的查询方法

方法作用示例
dict[键]通过键获取值,键不存在报错dict1["name"]
get("键")通过键获取值,键不存在返回Nonedict1.get("age")
keys()获取所有键dict1.keys()
values()获取所有值dict1.values()
items()获取所有键值对dict1.items()
dict1 = {"height": 1.8, "weight": 90, "name": "邵梦飞"} # 获取所有键 print(dict1.keys()) # dict_keys(['height', 'weight', 'name']) # 获取所有值 print(dict1.values()) # dict_values([1.8, 90, '邵梦飞']) # 获取所有键值对 print(dict1.items()) # dict_items([('height', 1.8), ('weight', 90), ('name', '邵梦飞')]) # get() 安全获取值 print(dict1.get("age")) # None(不会报错) print(dict1.get("age", 0)) # 0(可设置默认值)

5.3 字典易错案例

将字符串转换为字典是常见需求,需要注意分割逻辑:

# 需求:将 "height:1.8 weight:90 name:邵梦飞" 转换为字典 data = "height:1.8 weight:90 name:邵梦飞" my_dict = {} # 先按空格分割成列表 list_item = data.split(" ") print(list_item) # ['height:1.8', 'weight:90', 'name:邵梦飞'] for item in list_item: # 再按冒号分割成键和值 k, v = item.split(":") my_dict[k] = v print(f"字典结果:{my_dict}") # 字典结果:{'height': '1.8', 'weight': '90', 'name': '邵梦飞'}

注意split(":")分割后得到的值都是字符串类型,如果需要数值类型,需要额外进行类型转换。


六、集合

集合(set)是无序、不重复的容器,常用于去重和集合运算。

# 创建集合 my_set = {1, 2, 3, 3, 3} print(my_set) # {1, 2, 3}(自动去重) # 增:add() my_set.add(4) print(my_set) # {1, 2, 3, 4} # 删:remove()(元素不存在会报错) my_set.remove(2) print(my_set) # {1, 3, 4} # 查:in print(3 in my_set) # True

集合的特点:集合中的元素必须是可哈希的(不可变类型),所以列表和字典不能作为集合的元素。


七、总结

7.1 开发小技巧

  1. 鼠标悬停看返回和传参:在PyCharm等IDE中,将鼠标悬停在方法上可以看到返回值和参数说明,按Ctrl+P也可以查看传参提示。

  2. 快捷键Shift+F6:重命名变量/函数时,使用Shift+F6可以一键替换所有引用位置,避免遗漏。

  3. 容器直接构造:容器都可以直接构造返回,如a=1, b=2然后写[a, b],不必再创建一个空列表再append

7.2 今日重点总结

容器核心特点重点方法
字符串不可变,有序join(),split(),replace(),strip(),find()
元组不可变,有序单元素必须加逗号(1,), 支持+和切片
列表可变,有序append(),extend(),insert(),pop(),sort(),reverse()
字典键值对存储keys(),values(),items(),get(), 通过键增删改查
集合无序,不重复add(),remove(),in

下一篇将继续学习Python函数与面向对象基础,敬请期待!

练习建议:动手敲一遍所有代码,尤其注意元组单元素逗号、replace返回新字符串、字典get()与直接取键的区别。这些细节是面试和实际开发中的高频踩坑点。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 17:13:59

多瘤病毒BKV

BK多瘤病毒&#xff08;BKPyV&#xff09;是多瘤病毒科&#xff08;双链DNA病毒&#xff09;的一个成员&#xff0c;是一种小型非包膜DNA病毒&#xff0c;在人群中普遍存在&#xff0c;并在体内保持潜伏状态。它可能在免疫系统受损的个体中重新激活&#xff0c;尤其是在肾移植后…

作者头像 李华
网站建设 2026/8/22 17:13:10

新能源并网宽频带振荡:从阻抗分析到有源阻尼抑制的完整复现指南

如果你是一名从事新能源发电并网研究的工程师或研究生&#xff0c;当你在仿真中发现系统在某个频率范围内出现无法解释的持续振荡&#xff0c;导致仿真无法收敛甚至“炸机”时&#xff0c;你首先会怀疑什么&#xff1f;是控制器参数没调好&#xff0c;还是电路拓扑有问题&#…

作者头像 李华
网站建设 2026/8/22 17:11:06

C++模板编程:从泛型思维到STL实战,掌握编译期多态核心

1. 从“重复造轮子”到“一劳永逸”的思维转变如果你写过一段时间的C&#xff0c;尤其是写过一些需要处理多种数据类型的工具函数&#xff0c;比如交换两个变量的值、求数组最大值、排序等等&#xff0c;你大概率会写出下面这样的代码&#xff1a;// 交换两个int void swap(int…

作者头像 李华
网站建设 2026/8/22 17:10:23

FEALPy 上手指南:用 Python 跑通有限元分析的完整流程

FEALPy 上手指南&#xff1a;用 Python 跑通有限元分析的完整流程 【免费下载链接】fealpy Finite Element Analysis Library in Python 项目地址: https://gitcode.com/gh_mirrors/fe/fealpy 做仿真不想被商业 CAE 软件锁住&#xff1f;想自己控制网格、离散、求解的每…

作者头像 李华
网站建设 2026/8/22 17:07:46

CXPatcher 快速上手:3分钟给CrossOver打上优化补丁

CXPatcher 快速上手&#xff1a;3分钟给CrossOver打上优化补丁 【免费下载链接】CXPatcher A patcher to upgrade Crossover dependencies and improve compatibility 项目地址: https://gitcode.com/gh_mirrors/cx/CXPatcher CrossOver里游戏卡顿、UE4大作直接跑不起来…

作者头像 李华