字符串和列表是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)
| 方法 | 作用 | 示例 |
len(s) | 获取字符串长度 | len("hello") → 5 |
s.find(sub) | 查找子串,返回下标,找不到返回 -1 | "hello".find("ll") → 2 |
s.index(sub) | 查找子串,找不到报错 | "hello".index("ll") → 2 |
s.replace(old, new) | 替换子串 | "a,b".replace(",","-") → "a-b" |
s.split(sep) | 按分隔符拆分成列表 | "a,b".split(",") → ['a','b'] |
s.isalpha() | 是否全为字母 | "abc".isalpha() → True |
s.isdigit() | 是否全为数字 | "123".isdigit() → True |
s.upper() | 转大写 | "hi".upper() → "HI" |
s.lower() | 转小写 | "HI".lower() → "hi" |
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
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']
1.已知 s = "hello world",执行 print(s[5]) 输出结果是( )
'o'' '(空格)'w'2.字符串切片的“包前不包后”规则是指( )
3.已知 str1 = "python",执行 print(str1[2:5]) 输出结果是( )
'tho''th''pyt''thon'4.已知 str2 = "abcdefg",执行 print(str2[::-1]) 输出结果是( )
'abcdefg''gfedcba''aceg''bdf'5.下列代码中,能截取字符串 url = "https://www.taobao.com" 中 taobao 的是( )
url[12:18]url[12:17]url[11:17]url[11:18]6.已知 str3 = "123456789",执行 print(str3[1:8:3]) 输出结果是( )
'2468''258''369''147'7.执行 l1 = ["x", "y", "z"]; print("+".join(l1)) 输出结果是( )
'xyz''x+y+z''x,y,z'['x', '+', 'y', '+', 'z']8.已知 str4 = "hello maiya",执行 print(str4.find("maiya")) 输出结果是( )
567-1已知字符串 name = "ZhangSan",请通过下标和切片完成以下操作:
'Z''n''Zha''San'已知字符串 phone = "138-1234-5678",请通过字符串操作去掉其中的 -,最终输出 13812345678。
已知字符串 info = " 我今年25岁,月薪8000元 ",请完成以下操作:
25 和月薪数字 8000(仅需提取数字部分,无需转换类型)| 题号 | 答案 | 解析 |
| 1 | B | s[5] 对应第6个字符,"hello world" 中下标5是空格(h e l l o 空格 w...) |
| 2 | C | 切片规则:[start:stop] 包含 start,不包含 stop |
| 3 | A | "python"[2:5] → 下标2~4:'t', 'h', 'o' → "tho" |
| 4 | B | [::-1] 反转字符串:"gfedcba" |
| 5 | D | "https://www.taobao.com" 中 t 下标11,o 下标17(需包含),所以 [11:18] |
| 6 | B | "123456789"[1:8:3] → 下标1,4,7 → '2','5','8' → "258" |
| 7 | B | "+".join(l1) 用 "+" 连接列表元素 → "x+y+z" |
| 8 | B | "hello maiya" 中 "maiya" 首字母 m 下标6 |
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 编程中使用频率最高的两种数据结构,务必多加练习。熟练掌握它们,你就能轻松处理大部分文本和集合数据。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述