上一篇
Python序列操作完全指南 | 列表、元组、字符串常用方法整理
- Python
- 2025-08-08
- 1837
Python序列操作完全指南
列表、元组、字符串、range等序列类型的索引、切片及常用方法整理
什么是Python序列?
在Python中,序列是一种基本的数据结构,用于存储一组有序的元素。Python包含多种序列类型,每种都有其独特的特点和适用场景。理解序列操作是掌握Python编程的关键基础。
核心概念: 序列是元素的有序集合,可以通过索引访问元素,支持切片操作,并且可以使用内置函数如len()
、min()
、max()
等。
主要序列类型对比
类型 | 可变性 | 定义方式 | 特点 | 典型应用 |
---|---|---|---|---|
列表(list) | 可变 | [1, 2, 3] |
元素可修改,功能最丰富的序列 | 存储需要修改的数据集合 |
元组(tuple) | 不可变 | (1, 2, 3) |
创建后不能修改,性能较好 | 固定数据集合,字典键 |
字符串(str) | 不可变 | "hello" |
存储字符序列,文本处理 | 文本数据表示和处理 |
range | 不可变 | range(5) |
生成数字序列,节省内存 | 循环控制,数字序列生成 |
通用序列操作
所有序列类型都支持以下基本操作:
索引操作
通过索引访问序列中的单个元素(从0开始计数):
# 索引示例
my_list = [10, 20, 30, 40, 50]
print(my_list[0]) # 输出: 10
print(my_list[2]) # 输出: 30
print(my_list[-1]) # 输出: 50 (负索引表示从末尾开始)
切片操作
切片用于获取序列的子集,格式为[start:stop:step]
:
# 切片示例
text = "Python Programming"
print(text[0:6]) # 输出: Python
print(text[7:]) # 输出: Programming
print(text[::2]) # 输出: Pto rgamn (每隔一个字符)
print(text[::-1]) # 输出: gnimmargorP nohtyP (反转字符串)
常用序列函数
# 序列函数示例
nums = [5, 2, 8, 1, 9]
print(len(nums)) # 输出: 5 (序列长度)
print(min(nums)) # 输出: 1 (最小值)
print(max(nums)) # 输出: 9 (最大值)
print(sum(nums)) # 输出: 25 (求和)
# 成员检查
print(8 in nums) # 输出: True
print(3 in nums) # 输出: False
列表(list)操作详解
列表是Python中最灵活的数据结构,支持多种操作方法:
修改元素
fruits = ['apple', 'banana', 'cherry']
fruits[1] = 'blueberry' # 修改第二个元素
print(fruits) # 输出: ['apple', 'blueberry', 'cherry']
添加元素
# 添加单个元素
fruits.append('orange')
# 添加多个元素
fruits.extend(['grape', 'mango'])
# 在指定位置插入
fruits.insert(1, 'kiwi')
删除元素
# 根据值删除
fruits.remove('cherry')
# 根据索引删除
del fruits[0]
popped = fruits.pop(2) # 删除并返回元素
列表方法
nums = [3, 1, 4, 1, 5, 9]
nums.sort() # 排序: [1, 1, 3, 4, 5, 9]
nums.reverse() # 反转: [9, 5, 4, 3, 1, 1]
index = nums.index(4) # 查找位置: 2
count = nums.count(1) # 计数: 2
元组(tuple)操作
元组是不可变序列,创建后不能修改:
# 元组创建
colors = ('red', 'green', 'blue')
# 访问元素
print(colors[0]) # 输出: red
# 尝试修改会引发错误
# colors[1] = 'yellow' # TypeError
# 元组解包
a, b, c = colors
print(b) # 输出: green
为什么使用元组? 当需要确保数据不被修改时使用元组,例如作为字典的键或函数返回值。元组比列表更轻量,处理速度更快。
字符串(str)操作
字符串是字符序列,支持多种文本处理方法:
常用字符串方法
s = " Hello, Python! "
# 大小写转换
print(s.upper()) # " HELLO, PYTHON! "
print(s.lower()) # " hello, python! "
# 去除空白
print(s.strip()) # "Hello, Python!"
# 查找与替换
print(s.find('Py')) # 9
print(s.replace('Python', 'World'))
字符串格式化
# f-string (Python 3.6+)
name = "Alice"
age = 25
print(f"{name} is {age} years old")
# format方法
print("{} is {} years old".format(name, age))
# 分割与连接
words = "apple,banana,cherry".split(',')
new_s = '-'.join(words) # "apple-banana-cherry"
range类型操作
range用于生成不可变的数字序列,常用于循环:
# 创建range对象
r1 = range(5) # 0,1,2,3,4
r2 = range(1, 10) # 1到9
r3 = range(0, 10, 2) # 0,2,4,6,8
# 转换为列表
print(list(r3)) # [0, 2, 4, 6, 8]
# 在循环中使用
for i in range(3):
print(f"迭代 {i}")
# 成员检查
print(5 in r2) # True
print(10 in r2) # False
序列操作最佳实践
性能提示: 当处理大型数据集时,考虑使用生成器表达式而不是列表推导式来节省内存。
列表推导式 vs 生成器表达式
# 列表推导式 (立即计算)
squares_list = [x**2 for x in range(1000000)] # 占用内存
# 生成器表达式 (惰性计算)
squares_gen = (x**2 for x in range(1000000)) # 节省内存
# 选择建议:
# - 需要多次访问结果 → 列表
# - 只需一次迭代 → 生成器
序列解包技巧
# 基本解包
x, y, z = [1, 2, 3]
# 使用*收集多余元素
first, *middle, last = [1, 2, 3, 4, 5]
# first=1, middle=[2,3,4], last=5
# 交换变量
a, b = 10, 20
a, b = b, a # 交换后 a=20, b=10
本文由JingSeng于2025-08-08发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20257651.html
发表评论