Python新手必看:字符串和列表,这一篇就够了!
作者:着迷不白
字符串和列表是 Python 中最常用的两种序列类型。字符串是不可变的字符序列,列表是可变的任意元素序列。本篇带你掌握字符串的下标、切片、常用方法,以及列表的增删改查操作。作业 + 答案在文末,方便自测。
📖 前言
在前两篇笔记中,我们学习了变量、数据类型、输入输出以及类型转换。从本篇开始,我们将正式接触 Python 中最重要的两种数据结构——字符串和列表。
- 字符串:由一个个字符组成,比如
"hello",一旦创建就不能修改(不可变)。 - 列表:可以存放任意类型的数据,比如
[1, 2, "a"],并且可以随时增删改(可变)。
掌握它们,你就能处理大多数文本数据和集合数据了。
一、字符串基础
字符串可以使用单引号、双引号或三引号创建。三引号常用于多行字符串。
✅ 创建与拼接
# 单引号
s1 = 'Hello'
# 双引号
s2 = "world"
# 三引号(可换行)
s3 = """这是
多行字符串"""
# 拼接
s4 = s1 + ", " + s2 + "!"
print(s4) # Hello, world!
二、字符串下标(索引)
每个字符在字符串中都有一个下标(索引),从 0 开始。可以用 [下标] 获取对应字符。
✅ 正下标(从左到右)
my_string = "Hello, world!"
print(my_string[0]) # H(第一个字符)
print(my_string[4]) # o(第五个字符)
print(my_string[7]) # w(第八个字符)
⚠️ 下标不能超出范围,否则报错 IndexError。
✅ 负下标(从右到左)
my_string = "Hello, world!"
print(my_string[-1]) # !(最后一个字符)
print(my_string[-2]) # d(倒数第二个字符)
print(my_string[-8]) # ,(逗号)
✅ 小练习:提取指定字符
str1 = "python"
print(str1[1]) # y(第2个字符)
print(str1[4]) # o(第5个字符)
三、字符串切片
切片用于获取字符串中的一段子串,语法:[start:stop:step]
start:起始下标(包含),省略则从开头开始stop:结束下标(不包含),省略则到末尾结束step:步长,默认 1,可为负数(反向)
✅ 基本切片示例
s = "Hello, world!"
print(s[0:5]) # Hello(下标0~4)
print(s[7:]) # world!(下标7到末尾)
print(s[:5]) # Hello(省略start,默认0)
print(s[::]) # Hello, world!(完整字符串)
✅ 使用步长
s = "Hello, world!"
print(s[::2]) # Hlo ol!(每隔一个取一个)
✅ 负数步长(反转字符串)
s = "Hello"
print(s[::-1]) # olleH
✅ 小练习:切片提取
str2 = "Python"
print(str2[2:4]) # th(下标2~3)
print(str2[1::3]) # yo(从下标1开始,步长3)
四、字符串常用方法
|
方法 |
作用 |
示例 |
|
|
获取字符串长度 |
|
|
|
查找子串,返回下标,找不到返回 -1 |
|
|
|
查找子串,找不到报错 |
|
|
|
替换子串 |
|
|
|
按分隔符拆分成列表 |
|
|
|
是否全为字母 |
|
|
|
是否全为数字 |
|
|
|
转大写 |
|
|
|
转小写 |
|
✅ 查找与替换
s = "hello world"
print(s.find("world")) # 6
print(s.find("python")) # -1
old_str = "I like apples, apples are delicious."
new_str = old_str.replace("apples", "oranges")
print(new_str) # I like oranges, oranges are delicious.
✅ 拆分与判断
# 拆分
s = "apple, banana, cherry"
print(s.split(", ")) # ['apple', 'banana', 'cherry']
# 判断
print("Hello".isalpha()) # True
print("123".isdigit()) # True
print("Hello123".isalpha()) # False
✅ 大小写转换
print("hello".upper()) # HELLO
print("HELLO".lower()) # hello
✅ 格式化(format 方法)
name = 'Tom'
age = 20
print('我的名字是{},已经{}岁啦'.format(name, age))
# 我的名字是Tom,已经20岁啦
💡 更推荐使用 f-string(前面已学),更简洁:f"我的名字是{name},已经{age}岁啦"
✅ 综合练习
# 1. 计算长度
str1 = "Hello, world!"
print(len(str1)) # 13
# 2. 替换逗号为空格
str2 = "Hello, world, Python!"
print(str2.replace(",", " ")) # Hello world Python!
# 3. 拆分字符串
str3 = "Hello, world, Python"
words = str3.split(", ")
print(words) # ['Hello', 'world', 'Python']
# 4. 判断是否全为字母
str4 = "Hello123"
print(str4.isalpha()) # False
五、列表基础
列表是有序、可变的序列,可以存储任意类型的元素,用 [] 定义,元素之间用逗号分隔。
✅ 创建列表
my_list = [1, 2, 3, 'a', 'b', 'c']
print(my_list) # [1, 2, 3, 'a', 'b', 'c']
✅ 索引与切片(和字符串类似)
my_list = [1, 2, 3, 4, 5]
print(my_list[0]) # 1
print(my_list[:4]) # [1, 2, 3, 4]
print(my_list[4:]) # [5]
✅ 列表嵌套取值
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[1][1]) # 5(第二个列表的第二个元素)
六、列表常用操作(增删改查)
✅ 添加元素
# append():末尾添加
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # [1, 2, 3, 4]
# insert(位置, 元素):指定位置插入
my_list.insert(1, 10)
print(my_list) # [1, 10, 2, 3, 4]
✅ 删除元素
# remove(值):删除第一个匹配的元素
my_list = [1, 2, 3, 2, 4]
my_list.remove(2)
print(my_list) # [1, 3, 2, 4]
# del 列表[下标]:删除指定位置
my_list = [1, 2, 3, 4]
del my_list[1]
print(my_list) # [1, 3, 4]
✅ 查找元素
my_list = [1, 2, 3, 4, 5]
#查找对应值的位置
print(my_list.index(3)) # 2
my_list = [1, 2, 3, 2, 4, 2]
print(my_list.count(2)) # 3
#查看对应值的重复次数
✅ 修改元素
my_list = ['chinese', 'english', 'physics']
my_list[1] = 'math'
print(my_list) # ['chinese', 'math', 'physics']
✅ 其他常用操作
# 获取长度
my_list = [1, 2, 3, 4, 5]
print(len(my_list)) # 5
# 排序(原地修改)
my_list = [5, 2, 9, 1, 5, 6]
my_list.sort() # 升序
print(my_list) # [1, 2, 5, 5, 6, 9]
my_list.sort(reverse=True) # 降序
print(my_list) # [9, 6, 5, 5, 2, 1]
✅ 综合练习:购物车操作
# 1. 创建购物车列表
cart = ['apple', 'banana', 'orange']
# 2. 添加 grapes
cart.append('grapes')
print(cart) # ['apple', 'banana', 'orange', 'grapes']
# 3. 删除 apple
cart.remove('apple')
print(cart) # ['banana', 'orange', 'grapes']
# 4. 查找 banana 的索引
idx = cart.index('banana')
print(idx) # 0
# 5. 修改 banana 为 pear
cart[0] = 'pear'
print(cart) # ['pear', 'orange', 'grapes']
作业(请先独立完成,再对照答案)
一、单选题
- 已知
s = "hello world",执行print(s[5])输出结果是( )
A.'o'
B.' '(空格)
C.'w'
D. 报错 - 字符串切片的“包前不包后”规则是指( )
A. 包含起始下标,包含结束下标
B. 不包含起始下标,包含结束下标
C. 包含起始下标,不包含结束下标
D. 不包含起始下标,不包含结束下标 - 已知
str1 = "python",执行print(str1[2:5])输出结果是( )
A.'tho'
B.'th'
C.'pyt'
D.'thon' - 已知
str2 = "abcdefg",执行print(str2[::-1])输出结果是( )
A.'abcdefg'
B.'gfedcba'
C.'aceg'
D.'bdf' - 下列代码中,能截取字符串
url = "https://www.taobao.com"中taobao的是( )
A.url[12:18]
B.url[12:17]
C.url[11:17]
D.url[11:18] - 已知
str3 = "123456789",执行print(str3[1:8:3])输出结果是( )
A.'2468'
B.'258'
C.'369'
D.'147' - 执行
l1 = ["x", "y", "z"]; print("+".join(l1))输出结果是( )
A.'xyz'
B.'x+y+z'
C.'x,y,z'
D.['x', '+', 'y', '+', 'z'] - 已知
str4 = "hello maiya",执行print(str4.find("maiya"))输出结果是( )
A.5
B.6
C.7
D.-1
二、操作题
- 已知字符串
name = "ZhangSan",请通过下标和切片完成以下操作:
-
- 提取首字符
'Z' - 提取最后一个字符
'n' - 截取前3个字符
'Zha' - 截取后3个字符
'San'
- 提取首字符
- 已知字符串
phone = "138-1234-5678",请通过字符串操作去掉其中的-,最终输出13812345678。 - 已知字符串
info = " 我今年25岁,月薪8000元 ",请完成以下操作:
-
- 去除字符串首尾的空格
- 提取其中的年龄数字
25和月薪数字8000(仅需提取数字部分,无需转换类型)
作业答案
单选题答案
|
题号 |
答案 |
解析 |
|
1 |
B |
|
|
2 |
C |
切片规则: |
|
3 |
A |
|
|
4 |
B |
|
|
5 |
D |
|
|
6 |
B |
|
|
7 |
B |
|
|
8 |
B |
|
操作题答案
1. 字符串切片提取
name = "ZhangSan"
first_char = name[0] # 'Z'
last_char = name[-1] # 'n'
first_three = name[:3] # 'Zha'
last_three = name[-3:] # 'San'
2. 去掉连字符
phone = "138-1234-5678"
result = phone.replace("-", "")
print(result) # 13812345678
# 或使用 split + join
result = "".join(phone.split("-"))
3. 去除空格并提取数字
info = " 我今年25岁,月薪8000元 "
# 去除首尾空格
info_clean = info.strip()
# 方法1:直接切片(已知位置)
age = info_clean[3:5] # "25"
salary = info_clean[9:13] # "8000"
# 方法2:遍历提取所有数字(通用)
age = ""
salary = ""
found_age = False
for ch in info_clean:
if ch.isdigit():
if not found_age:
age += ch
else:
salary += ch
else:
if age and not found_age:
found_age = True
print(age, salary) # 25 8000
📝 总结
本篇笔记涵盖了字符串和列表的核心知识:
- 字符串:不可变序列,支持下标(正/负)、切片(包前不包后)、常用方法(
find、replace、split、isalpha、isdigit等)。 - 列表:可变序列,支持增删改查(
append、insert、remove、del、index、count、sort等)。
字符串和列表是 Python 编程中使用频率最高的两种数据结构,务必多加练习。熟练掌握它们,你就能轻松处理大部分文本和集合数据。
📌 如果觉得有帮助,欢迎收藏或分享给一起学习 Python 的小伙伴~
🔜 下一篇预告:字典与集合 —— 更强大的数据组织方式(键值对、去重等)。
© 着迷不白 — 人生苦短,我用 Python
更多推荐




所有评论(0)